还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
洛阳理工学院实验报告系部计算机系班级学号B13050326姓名B130503课程名称高级语言程序设计实验日期
2014.
4.28实验名称函数的应用成绩实验目的掌握定义和声明函数的方法
1.掌握函数实参与形参的对应关系,以及“值传递”的方式
2.掌握函数的嵌套调用和递归调用的方法
3.掌握全局变量和局部变量的概念和用法
4.实验条件电脑一台,VC++
6.0实验内容与步骤内容写一个判别素数的函数,在主函数输入一个正整数,输出是否为素数的信息本程序
1.应准备以下测试数据、、、、分别输入数据,运行程序并检查结果是否正确1734210,程序提示求素数函数1int primeint n{int i,flag;循环变量,标记是否为素数是素数不是素数*//*i flagn,1,0/*小于的数一定不是素数*/if n2flag=0;2或是素数*/else if n==2||n==3flag=l;/*23elsefori=2;i=n/2;i++/*从开始扫描,到为止,若都不能整除则是素数,否则不是素数*/2n/2n,n能被整除ifni flag=0;break;一直不能整除此时一定是素数*/if in/2flag=l;/*i n,n问函数的循环中,的能否去掉,去掉会出现什么问题?语句能prime fori=n/2”break否去掉,试分析void kgchar a
[10],char b
[10]int i,j,k;i=0,j=0;whilea[i]!=\0fork=0;k8;k++ifk%2!=0b[k]=b[j]=a[i];;i++j+=2;}}第五题#include stdio.hint mainvoid funchar a[];char a
[30];请输入字符串;printfgetsa;funa;}voidfunchar a[]int i,b=0,c=0,d=0,e=0;fori=0;a[i]!=,\0,;i++〉=ifa[i]=za[i]a||a[ik=Za[i]=Ab++;else ifa[i]=,9,a[i]=,0,c++;else ifa[i]=-*d++;else e++;,字母数为:数字数为:空格数为:%其他符号数为:%printf%d;\t%d;\t d;\t d\n\b,c,d,e;要求所编写的程序主函数的位置在其他函数之前,在主函数中对其所调用的函数作2声明保留判别素数的函数,修改主函数,要求实现输出之间的素数3100-200编写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出
2.程序提示输入程序,编译和运行程序,分析结果1分析函数声明中参数的写法先后用以下两种形式2
①函数声明中参数的写法与定义函数时的形式完全相同,如;void cpychars[],char c[]
②函数声明中参数的写法与定义函数时的形式完全相同,省略数组名如[];void cpychars[],char分析编译和运行,分析结果思考形参数组为什么可以不指定数组大小,如3void cpychars
[80],char[]如果随便指定数组大小行不行,如void cpychars
[40],char
[40]请分别上机试一下输入个学生门课的成绩,分别用函数实现下列功能
3.105
①计算每个学生平均分
②计算每门课的平均分
③找出所有个分数中最高的分数所对应的学生和课程50写一个函数,输入一个位数,要求输出这位数字字符,但每两个数字间空一个
4.44空格编写一个函数,由实参传来一个字符串,统计此字符串字母、数字、空格和其他字
5.符的个数,在主函数中输入一串字符串以及输出上述的结果步骤第题步骤1输入一个正整数定义一个变量Stepl:n,flag;进入子函数如果等于给赋值为;Step2:n1,flag0判断可以整除除了和之外的数;如果可以则给赋值为否则赋值为;将Step3:n1n flag0,1的值返回给主函数;flag如果输出该数是素数,否则输出该数不是素数.Step4:flag=l,第题步骤2定义两个数组Step1:a
[80],b
[40];输入一个字符串,赋给数组Step2:a;进入子函数,将数组中的元音字母挑选出来复制给数组Step3:a b;输出数组Step4:b.第题步骤3定义一个二维数组输入是个学生的成绩赋值给数组Stepl:a
[10]
[5],a;进入子函数口计算出每位学生的平均成绩,将值赋值给并返Step2:float aver1float a
[5]averl回给主函数,输出平均成绩;进入子函数计算出学生的每门科目的平均成绩,将值赋给并Step3:float aver2float a[]
[5]aver2返回给主函数,输出平均成绩;在子函数口⑸中将最高分选出来,之后将其对应数组行和竖求出来输Step4:float maxfloat a出,将最高分返回给主函数并输出第题步骤4定义两个数组并输入一个四位数,将其赋值给数组;进入子Stepl:char a
[10],char b
90.00向同氤最数第四题结果:清输入一个位数4234L234Press anykey tocontinue zoczoL--0^w^^!£^dt-0,l^^!k^k^k^,F/7543211^87654321198765^321^,-k••••6485876885776805556666oc878658085589t864848475568476857400084836第五题结果-****—一..请输入字符串:;;adal V143aash j学母数见数字数为空格数为其他符号数为;;;9324Press anykey tocontinue.实验总结第二题中忘了;使得输出的字符串后出现乱码
1.c[j]K y第三题一开始定义时没有将它们定义为全局变量,都是在主函数里和子函数里定义
2.i,j,x,y的,之后结果不对在考虑它们是主函数与子函数都使用的变量后,将其定义为全局变量,结果对了.第三题的最后一问中在比较一位学生的每门成绩,3ifa[i]U-l]a[i][j]{x=i;y=j-l;这种做法使得如果前面的数大,要换位,之后如果还是前面的数a[i]U]=a[i][j-l];};else{x=i;y=j;}大则标记就会出错改为结果对了x=i;y=j;}.第四题的一开始输成了这就使得结果错误,结果数字之间没有空格,因为数字4j+=2;j++;间要有空格,所以在复制时应将数组中的值赋值一个,空一个格a附源程序第一题#includestdio.hint mainint primeint;intn,flag;输入一个正整数printf\n;scanfH%dn,n;if flag-l是素数printf\n;else不是素数printf\rT;intprimeintnint i,flag;ifn-lflag=;elsefori=2;i=n/2;i++ifn%i==Oflag=O;else flag=1;}return flag;第二题#include stdio.hint mainvoid cpychar[],char[];chara
[80];char c
[40];请输入一个字符串:;printf\n”getsa;cpya,c;其中元音字母为:%printf s\n,c;口,voidcpychara charc[]int i=0J=0;whilea[i]!=,\0,ifa[i]==a||a[i]==A||a[i]==e||a[i]==E||a[i]==i||a[i]==r||a[i]==o||a[i]==O||a[i]==||a[i]==Uuc[j]=a[i];;j++;i++c[j]=\O;}第三题#includestdio.hint i,j,x,y;int mainfloat aver1float a[]
[5];float aver2float a[]
[5];float maxfloat a[]
[5];floata
[10]
[5];”请按照科目顺序输入学生成绩printf\n;fori=0;i10;i++第%位学生成绩:printf d,i+l;forj=0;j5;j++scanfn%f;a[i][j];fori=0;i10;i++printf第%d位学生的平均成绩为%
6.2f\nH,i+l,aver1a;forj=0;j5;j++printf第%d门科目的平均成绩为%
6.2^nHJ+l,aver2a;最高分为%为”,printf:
6.2maxa;float aver1floata[]
[5]float averl,sum=O;forj=0;j5;j++sum=sum+a[i][j];averl=sum/5;return averl;float aver2floata[]
[5]float sum=0,aver2;fori=0;i10;i++sum=sum+a[i][j];aver2=sum/10;return aver2;float maxfloatafl
[5]float max,b
[10];int x,y,z=0;fori=0;i10;i++x=i;y=0;forj=l;j5;j++ifa[i]U-l]a[i]U]a[i]U]=a[i]U-l];else x=i;y=j;}b[z]=a[x][y];z++;max=b[O];forz=1;z10;z++ifb[z-l]b[z]b[z]=b[z-l];二口;else maxbi=0;forj=0;j5;j++ifmax-a[i][j]break;ifj==4{i++;j=0;}ifi==10break;}第%位学生的第%门科目分数最高printf dd,”,i+l,j+l;return max;第四题#include stdio.hint mainvoidkgchar a
[10],char b
[10];chara
[10]b
[10];9intj;请输入一个位数:;printf4getsa;kga,b;⑻二\;b yprintfn%s\nH,b;return0;。
个人认证
优秀文档
获得点赞 0