实验081参考答案.docx
- 文档编号:30450939
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:18
- 大小:47.86KB
实验081参考答案.docx
《实验081参考答案.docx》由会员分享,可在线阅读,更多相关《实验081参考答案.docx(18页珍藏版)》请在冰豆网上搜索。
实验081参考答案
实验八指针程序设计
班级:
学号:
姓名:
评分:
一.【实验目的】
1、理解指针、地址和数组间的关系。
2、掌握通过指针操作数组元素的方法。
3、掌握数组名作为函数参数的编程方式。
4、进一步掌握C程序的调试方法和技巧。
二.【实验内容和步骤】
1、程序调试题
A.目标:
进一步学习掌握程序调试的方法和技巧。
B.内容:
有n个整数,使各数顺序往后循环移动m个位置(m 编写一个函数实现以上功能,在主函数中输入n个整数并输出调整后的n个整数。 改正程序中的错误,使其实现程序的功能。 (注: 程序文件保存在“调试示例”文件夹中,文件名为error08.cpp) ①调试正确的源程序清单 #include voidmov(int*,int,int); intmain() { intm,n,i,a[80],*p; printf("Inputn,m: "); scanf("%d%d",&n,&m); for(p=a,i=0;i scanf("%d",p++); mov(a,n,m); printf("Aftermove: "); for(i=0;i printf("%5d",a[i]); printf("\n"); return0; } voidmov(int*x,intn,intm) { inti,j,k; for(i=0;i k=x[n-1]; for(j=n-1;j>0;j--) x[j]=x[j-1];/*调试时设置断点*/ x[0]=k; } } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 2、完善程序,并调试运行程序 题目 (1)分类统计。 程序功能: 输入一行文字,分类统计其中的大写字母、小写字母、数字、空格以及其他字符的个数。 (注: 程序文件保存在“第1题”文件夹中)打开proj1.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 例如: 输入: bFaE3+8=1B 输出: 大写字母个数: 3 小写字母个数: 2 数字个数: 3 空格个数: 1 其他字符个数: 2 ①调试正确的源程序清单 #include #include voidmain() { inti,count[5]={0,0,0,0,0}; charstr[80],*p; printf("Inputalinechar: "); gets(str);p=str; //请在两条星线之间填入相应的代码,输入一行文字,分类统计其中的大写字母、小写字母、 //数字、空格以及其他字符的个数。 //要求: 利用指针方法来处理。 /*******************************************************************************/ for(i=0;*p! ='\0';p++) { if(*p>='A'&&*p<='Z'){count[0]++;continue;}//大写字母 elseif(*p>='a'&&*p<='z'){count[1]++;continue;}//小写字母 elseif(*p>='0'&&*p<='9'){count[2]++;continue;}//数字字符 elseif(*p=='')count[3]++;//空格字符 elsecount[4]++;//其他字符 } /*******************************************************************************/ printf("Theresultis: \n"); for(i=0;i<5;i++) { switch(i) { case0: printf("UpperChar: ");break; case1: printf("LowerChar: ");break; case2: printf("DigitChar: ");break; case3: printf("SpaceChar: ");break; case4: printf("OtherChar: ");break; } printf("%d\n",count[i]); } } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目 (2)排序。 程序功能: 输入一个整数n(1 n为list数组中的元素个数。 在main函数中调用sort函数实现排序,最后输出排序后的结果。 (注: 程序文件保存在“第2题”文件夹中)打开proj2.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 输入一个整数n(1 //函数voidsort(intlist[],intn),用选择法对list数组中的元素按升序排 //列,其中: n为list数组中的元素个数。 最后输出排序后的结果。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include voidmain() { inti,a[10]; voidsort(int*,int); for(i=0;i<10;i++)scanf("%d",&a[i]); //请在两条星线之间填入相应的代码,调用sort函数,对数组a中的元素按照升序排列 /*************************************************************************/ sort(a,10); /*************************************************************************/ printf("Theresultis: "); for(i=0;i<10;i++)printf("%d",a[i]);//输出排序后的结果 printf("\n"); } //定义一个函数voidsort(int*p,intn),用选择法对指针p指向的数组中的元素按升序 //排列,其中: n为数组中的元素个数。 voidsort(int*p,intn) { inti,j,iMin,temp; //请在两条星线之间填入相应的代码,用选择法对指针p指向的数组中的元素升序排列 //其中: n为list数组中的元素个数。 //要求: 利用指针方法来处理。 /*************************************************************************/ for(i=0;i iMin=i; for(j=i+1;j if(*(p+iMin)>*(p+j)) iMin=j; temp=*(p+i); *(p+i)=*(p+iMin); *(p+iMin)=temp; } /*************************************************************************/ } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(3)找最长的字符串。 程序功能: 连续输入5个以空格分隔的字符串(字符串的长度不超过80),输出其中长度最长的字符串。 例如: 输入: liwangzhangjinxiao,输出: zhang。 (注: 程序文件保存在“第3题”文件夹中)打开proj3.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 连续输入5个字符串(字符串的长度不超过80),输出其中长度最长的字符串。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include #include voidmain() { inti,MaxLen; charstr[80],longest[80],*p; printf("Input5strings: "); scanf("%s",str);//输入第一个字符串 strcpy(longest,str);MaxLen=strlen(str);//将第一个字符串设置为初始的最长字符串 p=str;//将指针p指向字符串str //请在两条星线之间填入相应的代码,输入其它4个字符串,查找其中最长的字符串。 //要求: 利用指针方法来处理。 /***********************************************************************/ for(i=0;i<4;i++){ scanf("%s",p); if(strlen(p)>MaxLen){ MaxLen=strlen(p); strcpy(longest,p); } } /************************************************************************/ printf("Thelongeststringis: %s\n",longest); } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(4)找最大的字符串。 程序功能: 连续输入5个以空格分隔的字符串(字符串的长度不超过80),输出其中最大的字符串。 例如: 输入: liwangzhajinxiao,输出: zha。 (注: 程序文件保存在“第4题”文件夹中)打开proj4.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 连续输入5个字符串(字符串的长度不超过80),输出其中最大的字符串。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include #include voidmain() { inti; charstr[80],max[80],*p; printf("Input5strings: "); scanf("%s",str);//输入第一个字符串 strcpy(max,str);//将第一个字符串设置为初始的最大字符串 p=str;//将指针p指向字符串str //请在两条星线之间填入相应的代码,输入其它4个字符串,查找其中最大的字符串。 //要求: 利用指针方法来处理。 /***********************************************************************/ for(i=0;i<4;i++){ scanf("%s",p); if(strcmp(p,max)>0) strcpy(max,p); } /************************************************************************/ printf("Themaxstringis: %s\n",max); } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(5)删除字符。 程序功能: 编写一个函数delchar(s,c),该函数将字符串s中出现的所有c字符删除。 在主程序中输入一个字符c和一个字符串s,调用delchar(s,c)函数删除字符串s中所有的c字符,然后输出删除后的字符串。 例如: 输入字符a和字符串liwangzhajinxiao,输出: liwngzhjinxio。 (注: 程序文件保存在“第5题”文件夹中)打开proj5.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(6)字符串复制。 程序功能: 编写一个函数strmcpy(s,t,m),该函数将字符串t中从m个字符开始的全部字符复制到字符串s中去。 在主程序中输入一个字符串t和一个开始位置m,调用strmcpy(s,t,m)函数,然后输出字符串s的结果。 例如: 输入字符串liwangzhajinxiao和开始位置2,输出: wangzhajinxiao。 (注: 程序文件保存在“第6题”文件夹中)打开proj6.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 编写一个函数strmcpy(s,t,m),将字符串t中从m个字符开始的全部字符复制到字符串s中去。 //在主程序中输入一个字符串t和一个开始位置m,调用strmcpy(s,t,m)函数,然后输出字符 //串s的结果。 //例如: 输入字符串liwangzhajinxiao和开始位置2,输出: wangzhajinxiao。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include #include voidmain() { chars[80],t[80]; intm; voidstrmcpy(char*s,char*t,intm); printf("Inputastrings: "); scanf("%s",t); printf("Inputbeginposition: "); scanf("%d",&m); //请在两条星线之间填入相应的代码,调用strmcpy(s,t,m)函数,将字符串t中从m个字符开始的全部 //字符复制到字符串s中去。 /**************************************************************************/ strmcpy(s,t,m); /**************************************************************************/ printf("Theresultis: %s\n",s); } voidstrmcpy(char*s,char*t,intm) { inti; //请在两条星线之间填入相应的代码,将字符串t中从m个字符开始的全部字符复制到字符串s中去。 //要求: 利用指针方法来处理。 /************************************************************************************/ for(i=0;i strcpy(s,t); /************************************************************************************/ } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(7)字符串连接。 程序功能: 编写一个函数strmcat(s,t),该函数将字符串t复制到字符串s的末端,并且返回字符串s的首地址。 在主程序中输入两个字符串s和t,调用strmcat(s,t)函数,然后输出字符串s的结果。 例如: 输入字符串LiXiao和Wei,输出: LiXiaoWei。 (注: 程序文件保存在“第7题”文件夹中)打开proj7.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 编写一个函数strmcat(s,t),将字符串t复制到字符串s的末端,并且返回字符串s的首地址。 //在主程序中输入两个字符串s和t,调用strmcat(s,t)函数,然后输出字符串s的结果。 //例如: 输入字符串LiXiao和Wei,输出: LiXiaoWei。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include #include voidmain() { chars[80],t[80],*p; char*strmcat(char*s,char*t); printf("Inputthefirststring: "); scanf("%s",s); printf("Inputthesecondstring: "); scanf("%s",t); //请在两条星线之间填入相应的代码,调用strmat(s,t)函数,将字符串t复制到字符串s中去。 /********************************************************************************/ p=strmcat(s,t); /********************************************************************************/ printf("Theresultis: %s\n",p); } char*strmcat(char*s,char*t) { inti,k; //请在两条星线之间填入相应的代码,将字符串t复制到字符串s中去,并返回字符串s的首地址。 //要求: 利用指针方法来处理。 /**********************************************************************************/ k=strlen(s); for(i=0;i<=strlen(t);i++) *(s+k+i)=*(t+i); /**********************************************************************************/ returns; }②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(8)字符串排序。 程序功能: 编写一个sort函数,实现对5个字符串按从大到小进行排序。 在主程序中输入5字符串,调用sort函数进行排序,然后输出排序后的结果。 例如: 输入字符串LiXiaoWangZhangYu,输出: ZhangYuXiaoWangLi。 (注: 程序文件保存在“第8题”文件夹中)打开proj8.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 #include #include voidmain() { inti; chars[5][80]; voidsort(char(*p)[80],intn); printf("Input5strings: "); for(i=0;i<5;i++)scanf("%s",s[i]); //请在两条星线之间填入相应的代码,调用sort函数,实现对5个字符串按从大到小进行排序。 /********************************************************************************/ sort(s,5); /********************************************************************************/ printf("Theresultis: "); for(i=0;i<5;i++)printf("%s",s[i]); printf("\n"); } voidsort(char(*p)[80],intn) { inti,j,iMax; chart[80]; //请在两条星线之间填入相应的代码,实现对5个字符串按从大到小进行排序。 (选择法) //要求: 利用指针方法来处理。 /********************************************************************************/ for(i=0;i { iMax=i; for(j=i+1;j strcpy(t,p[i]); strcpy(p[i],p[iMax]); strcpy(p[iMax],t); } /********************************************************************************/ } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(9)在数组中查找指定元素。 程序功能: 输入一个整数n(1 要求定义一个函数search(intlist[],intn,intx),在数组list中查找元素x,若找到则返回相应下标,否则返回-1,其中: n为list数组中的元素个数。 在main函数中调用search函数实现程序功能。 (注: 程序文件保存在“第9题”文件夹中)打开proj9.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 输入一个整数n(1 //查找x,如果找到则输出相应的下标,否则输出"Notfound"。 //要求: 定义并调用一个函数search(intlist[],intn,intx),在数组list中查找元素x,若找到 //则返回相应下标,否则返回-1,其中: n为list数组中的元素个数。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include voidmain() { inti,x,a[10],res; intsearch(int*,int,int); for(i=0;i<10;i++)scan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 081 参考答案