还剩4页未读,继续阅读
文本内容:
C语言程序设计实验报告实验六使用指针的程序设计1班级2012153学号201215317姓名杜顺永
一、实验目的1掌握指针的概念,会定义和使用指针变量;2能正确使用数组的指针和指向数组的指针变量;3熟悉指针做函数参数的使用方法;4能正确使用字符串的指针和指向字符串的指针变量
二、实验内容及步骤
1、按要求完善程序下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和形参n给了数组中数据的个数,利用指针dd返回奇数之和,利用指针even返回偶数之和例如数组中的值依次为1,9,2,3,11,6;则利用指针dd返回奇数之和24;利用指针even返回偶数之和8请在下面空白处将实现这一功能的函数完善,并且调试运行出结果程序代码如下所示ftinclude stdio.h^define N20void funint*a,int n,int*odd,int*evenint i;*odd=0;*even=0;for i=0;in;i++,a++{if*a%2==0*even=*even+*a;else*odd=*odd+*a;void mainint a[N]={l,9,2,3,11,6},i,n=6,odd,even;printf/zThe originaldata is:\n〃;fori=0;in;i++printf〃炕d〃,*a+i;printf〃\n\n〃;fun a,n,odd,even;printf/zThe sum of oddnumbers:%d\n,z,odd;printf zzThe sumofeven number:%d\nz,,even;运行结果•Q:\文档南程\Debug侯睑
61.exe-The originaldata is192311The sunof oddnumber is24Thesumof euen number is8Press anykey to continue
2.假设每班人数最多不超过30人,具体人数由键盘输入,试编程打印最高分及其学号要求用一维数组和指针变量作函数参数,编程打印某班一门课成绩的最高分和学号请编写相应的程序代码,并调试运行出正确结果程序代码#includestdio.hvoid mainfloat searchfloat*p,int n;;int num
[30]^p=num3long intn;float score
[30]^q=score,temp;printf”请输入班级人数nn=30n;scanfn%d,\n;fori=0;in;i++,p++,q++printf「请依次输入学号、成绩\nn;scanfH%d%r\p,q;temp=searchscore,n;printf最高分学号如下\nM;fori=0;in;i++ifscore[i]==tempprintfM%
5.1f%15d\n,\score[i],num[i];floatsearchfloat*p,int nint ij;float max=*p;fori=0;in;i++p++9if*pmaxmax=*p;returnmax;运行结果:・Q:\文档南程\Debug供睑
62.exew道输入覆级白裂n30)5请他次输入学号、成绩20121531498请依次输入学号、成绩:20121530294请依次输入学号、成绩:20121530996请依次输入学号、成绩:201215317100201215326100如下:最高分学号
201215317100.0201215326key to
100.0ress anycontinue请依次输入学号、成绩:
3.矩阵转置;要求从主程序中输入一个3*3的整形矩阵,调用一个函数,将此矩阵转置,用指针作为函数的形参,在主程序中输出转置后的矩阵程序代码#includestdio.hvoid main{void exint*p
[3],int*q;int str
[3]
[3],i,j;printf〃请按行输入矩阵3*3:\n〃;fori=0;i3;i++forj=0;j3;j++scanf C%4dzr,str[i][j];exstr,str
[0];printf〃逆置后矩阵为\n;fori=0;i3;i++|forj=0;j3;j++printf%4d”,str[i]Ej];printf〃\n〃;void exint*p
[3],int*qint i,temp;for i=0;i2;i++p++;q++;temp=*q;*q=**p;**p=temp;temp=**p+l;**p+l=*q+3;*q+3=temp;运行结果:li9\阳温理\Debug供缝63exJ请按行输入矩阵3吗455623201230982529逆置后矩阵为452098561225233029Press anykey tocontinue
4.从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出(例如输入abcdef,输出fedcba)请编写相应的程序代码,并调试运行出正确结果程序代码#includestdio.hvoid mainvoid changechar a[];char a
[100];printf(〃请输入一个字符串〃);scanf(%s”,a);changea;printf(逆置后字符串为%s\n,a);void changechara[]inti,n,temp;fori=0;a[i]!=,\0,;i++n=i+l;char*q=a+n-l;for i=l;i=n/2;i++,a++,q-temp=*a;*a=*q;*q=temp;运行结果.S39\文档流程Debug供验
64.exe-请输入一个字符串123rtycgh£j速置后字符串为:jfhffcytr321Press anykey tocontinue
5.编写在字串strl中找出所有非数字的字符串当成一个空格,存入字符数组str2中所有数字字符也必须依次存入str2中,strl不变仍为原字串的程序例如,字符串strl为〃$Ts!47*s456a23*+B9k〃,调用函数fun后,字符数组str2将存入〃47456239〃,strl仍然是〃$Ts!47*s456a23*+B9k〃程序代码#includestdio.h#includestdlib.hvoid main{void changechar*q,char*p;char strl
[100],str2
65.exe-
三、实验心得..实验中对数据排序、最大值问题理解不够深刻,指针运用有待提高,算法问题依然存在,花费时间多,效率不高wtke•••y。