




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验八 指针程序设计班级: 学号: 姓名: 评分: 一【实验目的】1、理解指针、地址和数组间的关系。2、掌握通过指针操作数组元素的方法。3、掌握数组名作为函数参数的编程方式。4、进一步掌握C程序的调试方法和技巧。二【实验内容和步骤】1、程序调试题A目标:进一步学习掌握程序调试的方法和技巧。B内容:有n个整数,使各数顺序往后循环移动m个位置(m<n)。编写一个函数实现以上功能,在主函数中输入n个整数并输出调整后的n个整数。改正程序中的错误,使其实现程序的功能。(注:程序文件保存在“调试示例”文件夹中,文件名为error08.cpp) 调试正确的源程序清单#include <stdio
2、.h>void mov(int *, int, int);int main() int m, n, i, a80, *p; printf("Input n, m:"); scanf("%d%d",&n,&m); for(p=a,i=0;i<n;i+) scanf("%d",p+); mov(a,n,m); printf("After move: "); for(i=0;i<n;i+) printf("%5d",ai);printf("n");
3、 return 0;void mov(int *x, int n, int m) int i,j,k; for(i=0;i<m;i+)k=xn-1; for(j=n-1;j>0;j-) xj=xj-1; /* 调试时设置断点 */ x0=k; 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。2、完善程序,并调试运行程序题目(1)分类统计。程序功能:输入一行文字,分类统计其中的大写字母、小写字母、数字、空格以及其他字符的个数。(注:程序文件保存在“第1题”文件夹中)打开proj1.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。例如:输入:bFaE3 +8=1B输出:
4、大写字母个数:3小写字母个数:2数 字 个 数:3空 格 个 数:1其他字符个数:2 调试正确的源程序清单#include <stdio.h>#include <string.h>void main( )int i,count5=0,0,0,0,0; char str80,*p; printf("Input a line char: ");gets(str);p=str; /请在两条星线之间填入相应的代码, 输入一行文字,分类统计其中的大写字母、小写字母、/数字、空格以及其他字符的个数。/要求:利用指针方法来处理。/*/ for(i=0;*p!=
5、39;0'p+)if(*p>='A' && *p<='Z') count0+;continue; /大写字母else if(*p>='a' && *p<='z') count1+;continue; /小写字母else if(*p>='0' && *p<='9') count2+;continue; /数字字符else if(*p=' ') count3+; /空格字符else count4+
6、; /其他字符/*/printf("The result is: n");for(i=0;i<5;i+)switch(i)case 0:printf("Upper Char: ");break;case 1:printf("Lower Char: ");break;case 2:printf("Digit Char: ");break;case 3:printf("Space Char: ");break;case 4:printf("Other Char: ");br
7、eak;printf("%dn",counti); 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。题目(2)排序。程序功能:输入一个整数n(1<n10),然后输入n个整数存入数组a中,要求定义一个函数void sort(int list,int n),用选择法对list数组中的元素升序排列,其中:n为list数组中的元素个数。在main函数中调用sort函数实现排序,最后输出排序后的结果。(注:程序文件保存在“第2题”文件夹中)打开proj2.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 调试正确的源程序清单/程序功能:输入一个整数n(1<
8、n10),然后输入n个整数存入数组a中,定义并调用一个/ 函数void sort(int list,int n),用选择法对list数组中的元素按升序排/ 列,其中:n为list数组中的元素个数。最后输出排序后的结果。/提示:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include <stdio.h>void main() int i, a10;void sort(int *, int); for(i=0; i<10; i+) scanf("%d", &ai);/请在两条星线之间填入相应的代码, 调用sort函数,对数组a中的元素按照
9、升序排列/*/sort(a,10);/*/printf("The result is: "); for(i=0;i<10;i+)printf("%d ",ai); /输出排序后的结果printf("n");/定义一个函数void sort(int *p,int n),用选择法对指针p指向的数组中的元素按升序/排列,其中:n为数组中的元素个数。void sort(int *p, int n)int i,j,iMin,temp;/请在两条星线之间填入相应的代码, 用选择法对指针p指向的数组中的元素升序排列/其中:n为list数组中的
10、元素个数。/要求:利用指针方法来处理。/*/for(i=0;i<n;i+)iMin=i;for(j=i+1;j<n;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文
11、件,在两条星线之间填入相应的代码,使程序完成该功能。 调试正确的源程序清单/程序功能:连续输入5个字符串(字符串的长度不超过80),输出其中长度最长的字符串。/提 示:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include <stdio.h>#include <string.h>void main( ) int i,MaxLen; char str80, longest80, *p; printf("Input 5 strings: "); scanf("%s",str);/输入第一个字符串strcpy(longe
12、st,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("The longest string is: %s n", longest); 运行结果:(提示:通过屏幕截图
13、,贴粘程序运行界面)。题目(4)找最大的字符串。程序功能:连续输入5个以空格分隔的字符串(字符串的长度不超过80),输出其中最大的字符串。例如:输入:li wang zha jin xiao,输出:zha。(注:程序文件保存在“第4题”文件夹中)打开proj4.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 调试正确的源程序清单/程序功能:连续输入5个字符串(字符串的长度不超过80),输出其中最大的字符串。/提 示:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include <stdio.h>#include <string.h>void ma
14、in( ) int i; char str80, max80, *p; printf("Input 5 strings: "); 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);
15、/*/ printf("The max string is: %s n", max); 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。题目(5)删除字符。程序功能:编写一个函数delchar(s,c),该函数将字符串s中出现的所有c字符删除。在主程序中输入一个字符c和一个字符串s,调用delchar(s,c)函数删除字符串s中所有的c字符,然后输出删除后的字符串。例如:输入字符a和字符串liwangzhajinxiao,输出:liwngzhjinxio。(注:程序文件保存在“第5题”文件夹中)打开proj5.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。
16、 调试正确的源程序清单 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。题目(6)字符串复制。程序功能:编写一个函数strmcpy(s,t,m),该函数将字符串t中从m个字符开始的全部字符复制到字符串s中去。在主程序中输入一个字符串t和一个开始位置m,调用strmcpy(s,t,m)函数,然后输出字符串s的结果。例如:输入字符串liwangzhajinxiao和开始位置2,输出:wangzhajinxiao。(注:程序文件保存在“第6题”文件夹中)打开proj6.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 调试正确的源程序清单/程序功能:编写一个函数strmcpy(s,t
17、,m),将字符串t中从m个字符开始的全部字符复制到字符串s中去。/ 在主程序中输入一个字符串t和一个开始位置 m,调用strmcpy(s,t,m)函数,然后输出字符/ 串s的结果。/例 如:输入字符串liwangzhajinxiao和开始位置2,输出:wangzhajinxiao。/提 示:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include <stdio.h>#include <string.h>void main( ) char s80, t80;int m;void strmcpy(char *s, char *t, int m); printf
18、("Input a strings: "); scanf("%s",t);printf("Input begin position: ");scanf("%d",&m); /请在两条星线之间填入相应的代码, 调用strmcpy(s,t,m)函数,将字符串t中从m个字符开始的全部/字符复制到字符串s中去。/*/strmcpy(s,t,m);/*/printf("The result is: %s n", s); void strmcpy(char *s, char *t, int m) i
19、nt i; /请在两条星线之间填入相应的代码, 将字符串t中从m个字符开始的全部字符复制到字符串s中去。/要求:利用指针方法来处理。/*/ for(i=0;i<m;i+,*t+);strcpy(s,t);/*/ 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。题目(7)字符串连接。程序功能:编写一个函数strmcat(s,t),该函数将字符串t复制到字符串s的末端,并且返回字符串s的首地址。在主程序中输入两个字符串s和t,调用strmcat(s,t)函数,然后输出字符串s的结果。例如:输入字符串LiXiao和Wei,输出:LiXiaoWei。(注:程序文件保存在“第7题”文件夹中)打
20、开proj7.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 调试正确的源程序清单/程序功能:编写一个函数strmcat(s,t),将字符串t复制到字符串s的末端,并且返回字符串s的首地址。/ 在主程序中输入两个字符串s和t,调用strmcat(s,t)函数,然后输出字符串s的结果。/例 如:输入字符串LiXiao和Wei,输出:LiXiaoWei。/提 示:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include <stdio.h>#include <string.h>void main( ) char s80, t80, *p;char
21、* strmcat(char *s, char *t); printf("Input the first string: "); scanf("%s",s); printf("Input the second string: "); scanf("%s",t); /请在两条星线之间填入相应的代码, 调用strmat(s,t)函数,将字符串t复制到字符串s中去。/*/p=strmcat(s,t);/*/printf("The result is: %s n", p); char * strmcat
22、(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,输出:
23、Zhang Yu Xiao Wang Li。(注:程序文件保存在“第8题”文件夹中)打开proj8.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 调试正确的源程序清单#include <stdio.h>#include <string.h>void main( )int i; char s580;void sort(char (*p)80, int n); printf("Input 5 strings: ");for(i=0;i<5;i+) scanf("%s",si); /请在两条星线之间填入相应的代码,
24、 调用sort函数,实现对5个字符串按从大到小进行排序。/*/sort(s, 5);/*/printf("The result is: ");for(i=0;i<5;i+) printf("%s ",si); printf("n"); void sort(char (*p)80, int n) int i,j,iMax;char t80; /请在两条星线之间填入相应的代码, 实现对5个字符串按从大到小进行排序。(选择法)/要求:利用指针方法来处理。/*/ for(i=0;i<n-1;i+)iMax=i;for(j=i+1;
25、j<n;j+) if(strcmp(pj,piMax)>0) iMax=j;strcpy(t,pi);strcpy(pi,piMax);strcpy(piMax,t);/*/ 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。题目(9)在数组中查找指定元素。程序功能:输入一个整数n(1<n10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应的下标,否则输出“Not found”。要求定义一个函数search(int list,int n,int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1,其中:n为list数组中的元素个数。在main函数中调用search函数实现程序功能。(注:程序文件保存在“第9题”文件夹中)打开proj9.cpp文件,在两条星线之间填入相应的代码,使程序完
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三农经济统计分析与研究方案集锦
- 客户服务投诉处理表
- 防渗渠道施工方案
- 家装施工方案范本
- 水电工法展示样板施工方案
- 挖掘机打管桩施工方案
- 工厂环氧地坪工程施工方案
- 初一下人教版数学试卷
- 香港动力源国际有限公司股东全部权益价值资产评估报告
- 宁波复式屋顶花园施工方案
- 2025年江西青年职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 全套教学课件《工程伦理学》
- 初中物理校本教材《物理之窗》内容
- 清华大学考生自述
- 五年级下册英语课件--Lesson--7《Arriving-in-Beijing-》|冀教版-(三起)-(共21张PPT)
- NBC(一体式)系列气体保护焊机说明书(凯尔达)
- 武发[2004]13关于积极推进“ 城中村”综合改造工作的意见
- 体温单(三测单)
- 市政燃气管道工程施工中监理的重点和难度探究
- 声控灯的设计(毕业设计
- 毕业设计(论文)高效精密大豆播种机设计(含全套CAD图纸)
评论
0/150
提交评论