C程序设计指针和字符串实验报告.docx
- 文档编号:8383375
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:9
- 大小:49.07KB
C程序设计指针和字符串实验报告.docx
《C程序设计指针和字符串实验报告.docx》由会员分享,可在线阅读,更多相关《C程序设计指针和字符串实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
C程序设计指针和字符串实验报告
贵州大学
《C程序设计实验》
实验报告
实验名称:
专业
电子信息科学与技术
班级
2008级1班
姓名
学号
教师
贵州大学理学院
2010年
一、实验目的:
(1)通过实验进一步掌握指针的概念,会定义和使用指针变量;
(2)能正确使用数组的指针和指向数组的指针变量;
(3)能正确使用字符串的指针和指向字符串的指针变量;
(4)能正确使用指向函数的指针变量;
(5)了解指向指针的指针的概念及其使用方法。
二、实验环境:
Windows7、MicrosoftVisualStudio2010
三、实验内容:
编程序并上机调试运行程序(都要求用指针处理)。
(1).输入三个整数,按由小到大的顺序输出,然后将程序改为:
输入三个字符串,按由小到大顺序输出.
然后将程序改为输入3个字符串,按有效到大的顺序输出。
#include
voidmain()
{
inta,b,c,t;
int*p1,*p2,*p3;
puts("inputa,b,c:
");
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
if(*p1>*p2)
{t=*p1;*p1=*p2;*p2=t;}
if(*p1>*p3)
{t=*p1;*p1=*p3;*p3=t;}
if(*p2>*p3)
{t=*p2;*p2=*p3;*p3=t;}
printf("theorderis:
%d,%d,%d\n",*p1,*p2,*p3);
}
运行情况:
程序改为:
#include
#include
voidmain()
{
voidswap(char*,char*);
charstr1[2],str2[20],str3[20];
puts("inputthreearray:
");
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0)
swap(str1,str2);
if(strcmp(str1,str3)>0)
swap(str1,str3);
if(strcmp(str2,str3)>0)
swap(str2,str3);
printf("theorderis:
%s,%s,%s\n",str1,str2,str3);
}
voidswap(char*p1,char*p2)
{
charp[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
}
运行情况:
(2).将一个3X3的矩阵转置,用一函数实现之。
在主函数中用scanf函数输入以下矩阵元素:
l35
7911
131519
将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。
#include
voidmain()
{
voidzhu(int*px);
inta[3][3],i,j,*p;
puts("input3x3:
");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
p=&a[0][0];
zhu(p);
printf("转置:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
}
voidzhu(int*px)
{
intt,i,j,k=0;
for(i=0;i<3;i++)
for(j=0;j
{
{t=*(px+3*i+j);*(px+3*i+j)=*(px+3*j+i);*(px+3*j+i)=t;}
}
}
运行情况:
(3).有n个人围成一圈,顺序排号。
从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
#include
voidmain()
{
inti,k,m,n,a[60],*p;
puts("inputn:
");
scanf("%d",&n);
p=a;
for(i=0;i *(p+i)=i+1; i=0; k=0; m=0; while(m { if(*(p+i)! =0) k++; if(k==3) { *(p+i)=0; k=0; m++; } i++; if(i==n) i=0; } while(*p==0) p++; printf("thelastoneis: %d\n",*p); } 运行情况: (4).用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为: intstrcmp(char*p1,char*p2); 设p1指向字符串s1,p2指向字符串s2,要求当s1=s2时,函数返回值为0,如果sl≠s2,则返回它们二者第一个不相同字符的ASCII码差值(如“BOY”与“BAD”的第二个字母不相同,“O”与“A”之差为79—65=14);如果sl>s2,则输出正值;如果sl 两个字符串s1、s2由main函数输入,strcmp函数的返回值也由main函数输出。 #include voidmain() { intstrcmp(char*,char*); chars1[20],s2[20]; puts("inputthetwoarray: "); gets(s1); gets(s2); printf("theresultis: %d\n",strcmp(s1,s2)); } intstrcmp(char*p1,char*p2) { intflag; for(;(*p1&&*p2)! ='\0';p1++,p2++) { if(*p1! =*p2) {flag=*p1-*p2;break;} else flag=0; } return(flag); } 运行情况: (5).用指向指针的指针的方法对n个整数排序并输出。 要求将排序单独写成一个函数。 n和各整数在主函数中输入,最后在主函数中输出。 #include voidmain() { voidsort(int**p,intn); inti,n,digit[20],**p,*pstr[20]; puts("inputn: "); scanf("%d",&n); for(i=0;i pstr[i]=&digit[i]; printf("input%dintegernumbers: \n",n); for(i=0;i scanf("%d",pstr[i]); p=pstr; sort(p,n); printf("now,thesequenceis: \n",n); for(i=0;i printf("%d",*pstr[i]); printf("\n"); } voidsort(int**p,intn) { inti,j,*temp; for(i=0;i { for(j=i+1;j { if(**(p+i)>**(p+j)) { temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } } } 运行情况: 四、实验总结。 大家都认为,c语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。 因此,说指针是c语言的灵魂,一点都不为过。 同时,这种说法也让很多人产生误解,似乎只有c语言的指针才能算指针。 basic不支持指针,在此不论。 其实,pascal语言本身也是支持指针的。 从最初的pascal发展至今的objectpascal,可以说在指针运用上,丝毫不会逊色于c语言的指针。 指针数组: 就是一个整数数组,那个数组的各个元素都是整数,指向某个内存地址。 数组指针: 数组名本身就是一个指针,指向数组的首地址。 注意这是一个常数。 2010年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 指针 字符串 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)