实验08-1参考答案
更新时间:2024-03-19 07:23:01 阅读量: 综合文库 文档下载
实验八 指针程序设计
班级: 学号: 姓名: 评分:
一.【实验目的】
1、理解指针、地址和数组间的关系。 2、掌握通过指针操作数组元素的方法。 3、掌握数组名作为函数参数的编程方式。 4、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题
A.目标:进一步学习掌握程序调试的方法和技巧。
B.内容:有n个整数,使各数顺序往后循环移动m个位置(m #include void mov(int *, int, int); int main() { int m, n, i, a[80], *p; printf(\ scanf(\ for(p=a,i=0;i printf(\ for(i=0;i printf(\ printf(\ return 0; } void mov(int *x, int n, int m) { int i,j,k; for(i=0;i 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 void main( ) { int i,count[5]={0,0,0,0,0}; char str[80],*p; printf(\ gets(str);p=str; //请在两条星线之间填入相应的代码, 输入一行文字,分类统计其中的大写字母、小写字母、 //数字、空格以及其他字符的个数。 //要求:利用指针方法来处理。 /*******************************************************************************/ for(i=0;*p!='\\0';p++) { if(*p>='A' && *p<='Z') {count[0]++;continue;} //大写字母 else if(*p>='a' && *p<='z') {count[1]++;continue;} //小写字母 else if(*p>='0' && *p<='9') {count[2]++;continue;} //数字字符 else if(*p==' ') count[3]++; //空格字符 else count[4]++; //其他字符 } /*******************************************************************************/ printf(\ for(i=0;i<5;i++) { switch(i) { case 0:printf(\ case 1:printf(\ case 2:printf(\ case 3:printf(\ case 4:printf(\ } printf(\ } } ② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。 题目(2)排序。程序功能:输入一个整数n(1 sort(int list[],int n),用选择法对list数组中的元素升序排列,其中:n为list数组中的元素个数。在main函数中调用sort函数实现排序,最后输出排序后的结果。(注:程序文件保存在“第2题”文件夹中)打开proj2.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ① 调试正确的源程序清单 //程序功能:输入一个整数n(1 int i, a[10]; void sort(int *, int); for(i=0; i<10; i++) scanf(\ //请在两条星线之间填入相应的代码, 调用sort函数,对数组a中的元素按照升序排列 /*************************************************************************/ sort(a,10); /*************************************************************************/ printf(\ for(i=0;i<10;i++)printf(\输出排序后的结果 printf(\} //定义一个函数void sort(int *p,int n),用选择法对指针p指向的数组中的元素按升序 //排列,其中:n为数组中的元素个数。 void sort(int *p, int n) { int i,j,iMin,temp; //请在两条星线之间填入相应的代码, 用选择法对指针p指向的数组中的元素升序排列 //其中:n为list数组中的元素个数。 //要求:利用指针方法来处理。 /*************************************************************************/ for(i=0;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),输出其中长 度最长的字符串。例如:输入:li wang zhang jin xiao,输出:zhang。(注:程序文件保存在“第3题”文件夹中)打开proj3.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ① 调试正确的源程序清单 //程序功能:连续输入5个字符串(字符串的长度不超过80),输出其中长度最长的字符串。 //提 示:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include void main( ) { int i,MaxLen; char str[80], longest[80], *p; printf(\ scanf(\输入第一个字符串 strcpy(longest,str);MaxLen=strlen(str);//将第一个字符串设置为初始的最长字符串 p=str;//将指针p指向字符串str //请在两条星线之间填入相应的代码, 输入其它4个字符串,查找其中最长的字符串。 //要求:利用指针方法来处理。 /***********************************************************************/ for(i=0;i<4;i++){ scanf(\ if(strlen(p)>MaxLen){ MaxLen=strlen(p); strcpy(longest,p); } } /************************************************************************/ printf(\} ② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。 题目(4)找最大的字符串。程序功能:连续输入5个以空格分隔的字符串(字符串的长度不超过80),输出其中最 大的字符串。例如:输入:li wang zha jin xiao,输出:zha。(注:程序文件保存在“第4题”文件夹中)打开proj4.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ① 调试正确的源程序清单 //程序功能:连续输入5个字符串(字符串的长度不超过80),输出其中最大的字符串。 //提 示:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include void main( ) { int i; char str[80], max[80], *p; printf(\ scanf(\输入第一个字符串 strcpy(max,str);//将第一个字符串设置为初始的最大字符串 p=str;//将指针p指向字符串str //请在两条星线之间填入相应的代码, 输入其它4个字符串,查找其中最大的字符串。 //要求:利用指针方法来处理。 /***********************************************************************/ for(i=0;i<4;i++){ scanf(\ if(strcmp(p,max)>0) strcpy(max,p); } /************************************************************************/ printf(\} ② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。 题目(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 void main( ) { char s[80], t[80]; int m; void strmcpy(char *s, char *t, int m); printf(\ scanf(\ printf(\ scanf(\ //请在两条星线之间填入相应的代码, 调用strmcpy(s,t,m)函数,将字符串t中从m个字符开始 的全部 //字符复制到字符串s中去。 /**************************************************************************/ strmcpy(s,t,m); /**************************************************************************/ printf(\} void strmcpy(char *s, char *t, int m) { int i; //请在两条星线之间填入相应的代码, 将字符串t中从m个字符开始的全部字符复制到字符串s 中去。 / for(i=0;i /************************************************************************************ / } ② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。 //要求:利用指针方法来处理。 /************************************************************************************ 题目(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 void main( ) { char s[80], t[80], *p; char * strmcat(char *s, char *t); printf(\ scanf(\ printf(\ scanf(\ //请在两条星线之间填入相应的代码, 调用strmat(s,t)函数,将字符串t复制到字符串s中去。 /********************************************************************************/ p=strmcat(s,t); /********************************************************************************/ printf(\} char * strmcat(char *s, char *t) { int i,k; //请在两条星线之间填入相应的代码, 将字符串t复制到字符串s中去,并返回字符串s的首地址。 //要求:利用指针方法来处理。 /**********************************************************************************/ k=strlen(s); for(i=0;i<=strlen(t);i++) *(s+k+i)=*(t+i); /**********************************************************************************/ return s; } ② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。 题目(8)字符串排序。程序功能:编写一个sort函数,实现对5个字符串按从大到小进行排序。在主程序中输入 5字符串,调用sort函数进行排序,然后输出排序后的结果。例如:输入字符串Li Xiao Wang Zhang Yu,输出:Zhang Yu Xiao Wang Li。(注:程序文件保存在“第8题”文件夹中)打开proj8.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ① 调试正确的源程序清单 #include void main( ) { int i; char s[5][80]; void sort(char (*p)[80], int n); printf(\ for(i=0;i<5;i++) scanf(\ //请在两条星线之间填入相应的代码, 调用sort函数,实现对5个字符串按从大到小进行排序。 /********************************************************************************/ sort(s, 5); /********************************************************************************/ printf(\ for(i=0;i<5;i++) printf(\ printf(\} void sort(char (*p)[80], int n) { int i,j,iMax; char t[80]; //请在两条星线之间填入相应的代码, 实现对5个字符串按从大到小进行排序。(选择法) //要求:利用指针方法来处理。 /********************************************************************************/ for(i=0;i iMax=i; for(j=i+1;j strcpy(p[i],p[iMax]); strcpy(p[iMax],t); } /********************************************************************************/ } ② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。 题目(9)在数组中查找指定元素。程序功能:输入一个整数n(1 输入一个整数x,在数组a中查找x,如果找到则输出相应的下标,否则输出“Not found”。要求定义一个函数search(int list[],int n,int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1,其中:n为list数组中的元素个数。在main函数中调用search函数实现程序功能。(注:程序文件保存在“第9题”文件夹中)打开proj9.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ① 调试正确的源程序清单 //程序功能:输入一个整数n(1 数组a 中 // 查找 x,如果找到则输出相应的下标,否则输出\。 //要 求:定义并调用一个函数search(int list[],int n,int x),在数组list中查找元素x, 若找到 // 则返回相应下标,否则返回-1,其中:n为list数组中的元素个数。 //提示:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include int i, x, a[10], res; int search(int *, int, int); for(i=0; i<10; i++) scanf(\ scanf(\ //请在两条星线之间填入相应的代码, 调用search函数,查找整数x在数组a中的位置。 /*************************************************************************/ res=search(a,10,x); /*************************************************************************/ if(res==-1)printf(\ else printf(\} //定义一个函数search(int list[],int n,int x),在数组list中查找元素x,若找到则 //返回相应下标,否则返回-1,其中:n为list数组中的元素个数。 int search(int *p, int n, int x) { int i, pos; //请在两条星线之间填入相应的代码, 查找x在指针p指向的含n个元素的数组中的位置 //要求:利用指针方法来处理。 /*************************************************************************/ pos=-1; for(i=0;i /*************************************************************************/ return pos; } ② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
正在阅读:
实验08-1参考答案03-19
高考数学一轮复习 11.1 抽样方法与总体分布的估计考点及自测 理 新人教A版05-08
二年级下册语文培优补差计划05-12
深奥富有哲理的语句02-11
党支部对党员的评议意见和建议08-01
可跳飞自转旋翼飞行器推/升力系统参数优化07-26
遗传算法解决TSP问题 C++、MFC界面编程 - 图文11-18
2015年汉字听写大赛复赛11、12场06-12
家乡的景物作文200字07-10
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 答案
- 参考
- 实验
- 08
- 全国省级联考word全国普通高等学校2018年统一考试理科综合模拟生
- 慈利群众信访举报转办及地方查处情况一览表 - 图文
- 16年学业水平测试模拟试题语文4及参考答案
- 新版Max1000概述
- 江苏前后员工手册7(新版组织架构图)
- 高考数学一轮复习最基础考点系列考点46三角函数的定义域和
- 几何量公差与检测复习资料
- 高中数学 第一章 三角函数章末复习课学案 新人教A版必
- 中级-医学统计学习题1
- 基于组织学习的企业创新网络系统研究
- 九型人格之职场心理期末考试
- DEV NavBarControl控件Item的使用
- 《移动应用开发》试题及答案
- 教育学习文章区委书记在全区新任领导干部谈心会上的讲话
- 山东省乡村学校少年宫考核评估标准
- 江苏省无锡市普通高中2017-2018学年高一下学期期末考试物理试题W
- 柴油发动机基本原理一
- 014年高考真题文综(山东卷)解析版
- 钢筋工程专项施工方案(完整) - 图文
- 尔雅生命科学与人类文明章节测验2019年1月