1、C+实验报告程序设计语言实验报告实验序号: 实验项目名称:数组与函数学号姓名专业、班实验地点指导教师时间一、实验目的及要求1 掌握一维数组的定义、初始化和访问方法;2 掌握二维数组的定义、初始化和访问方法;3 掌握字符数组和字符串的使用方法;4 掌握常用的字符串处理函数;5 掌握使用数组解决常见问题。 6 掌握函数的定义和调用方法。7 掌握函数实参与形参的对应关系。8 掌握递归函数编写的规律。二、实验设备(环境)及要求1. 软件需求:Visual C+ 6.02. 硬件需求: Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间三、实验内容与步骤1、
2、编写C+程序,测试下列数组的定义方式是否正确。(1)void main() int n; cinn; int an; .(2)#define M 10void main() int aM+2; . (3) void main() int a2+2*4; .2、 已知10名选手的比赛编号分别为1-10,从键盘分别输入他们的比赛成绩。设计一个循环,根据用户输入的比赛编号,输出对应选手的成绩。当用户输入0时循环结束,同时整个程序结束。3、 假设一维数组x中存放了某班学生的成绩(至少10个成绩),编程输出成绩低于全班平均分同学的人数。4、 将一个给定的一维数组反过来存放,要求仍然存放在原数组中,且不借
3、助其它数组。5、 在一个长度为20的一维数组中存放n个有效元素(ns2,输出1;若s1=s2,输出0;若s1n; int an; .(2)#define M 10void main() int aM+2; . (3) void main() int a2+2*4; .#include void main() int n,b; cinn; int an; coutplease input nendl; for(b=0;bn;b+) cinab; couta3endl; (1) 程序定义错误,无法执行。#include #define M 10void main() int b; int aM+2
4、; for(b=0;bM+2;b+) coutplease input nab; couta3endl; #include void main() int b; int a2+2*4; for(b=0;b10;b+) coutplease input nab; couta3endl; 2、 已知10名选手的比赛编号分别为1-10,从键盘分别输入他们的比赛成绩。设计一个循环,根据用户输入的比赛编号,输出对应选手的成绩。当用户输入0时循环结束,同时整个程序结束。#include void main() int a10; int b,c; for(b=0;b10;b+) c=b+1; cout请输入
5、第cab; for(;b!=0;) coutb; c=b-1; if(b=0) break; coutacendl; 3、 假设一维数组x中存放了某班学生的成绩(至少10个成绩),编程输出成绩低于全班平均分同学的人数。#include void main() int a10; int b,c; double d=0; for(b=0;b10;b+) c=b+1; cout请输入第cab; d+=ab; d=d/10; for(b=0,c=0;b=9;b+) if(abd) c+; cout低于平均分的人数为cendl;4、 将一个给定的一维数组反过来存放,要求仍然存放在原数组中,且不借助其它数
6、组。#include void main() int d20; int a,b,c; for(a=0;a20;a+) b=a+1; cout请输入数组的第 b个数:d ada; for(a=0;a=9;a+) c=da; da=d19-a; d19-a=c; for(a=0;a20;a+) coutda= daendl;5、 在一个长度为20的一维数组中存放n个有效元素(n20,n及元素值均从键盘输入),再通过键盘输入一个新的元素值a和整数m,判断m的值是否超过数组元素下标的取值范围,若超出范围,则输出“位置不正确!”,否则将元素a插入到数组下标为m的位置,原下标为m至n-1的元素依次后移,要
7、求输出插入前和插入后的数组有效元素序列。#include void main() int d20,e20; int a,b,n,m,h,k; coutn; for(a=0;an;a+) b=a+1; cout请输入数组的第 b个数:d ada; ea=da; coutbm; if(mn) cout=m;a-) da+1=da; dm=b; for(a=0;an;a+) coutea= eaendl; for(a=0;an+1;a+) coutda= daendl; 6、 将一个15个元素的无序序列,按非减顺序排序后输出。#include void main() int a15,b,c,d,e;
8、 for(b=0;b15;b+) cout请输入第b+1ab; for(b=0;b=13;b+) e=1; for(c=0;cac+1) e=0; d=ac; ac=ac+1; ac+1=d; for(b=14;b=0;b-) coutabendl;7、 用二维数组定义一个n*n的矩阵,矩阵的元素为该元素所在行号*n后加上列号(行号、列号均从0开始),输出该二维数组各元素并总结规律。#include const int n=10;void main() int ann,i,j; for(i=0;in;i+) for(j=0;jn;j+) aij=n*i+j; for(i=0;in;i+) fo
9、r(j=0;jn;j+) coutaij=aijt;8、 编程求矩阵的加法+#include void main() int A33=5,7,8,2,-2,4,1,1,1,B33=4,-2,3,3,9,4,8,-1,2,C33,i,j; for(i=0;i3;i+) for(j=0;j3;j+) Cij=Aij+Bij; coutCij ; coutendl; 9、 定义一个二维数组来存放6个评委的姓名和评分,输出成绩最高的评委姓名和评分,以及成绩最低的评委姓名和评分,在原数组中将这两个评委的信息删除,输出剩余评委的姓名和评分,及最后的平均评分。#include#include#include
10、void main() char a620; float f6; int b,c; char e20; float d; for(b=0;b6;b+) cout请输入第b+1评委的名字:endl; gets(ab); cout请输入分数fb; for(b=0;b6;b+) for(c=0;cfc+1) d=fc+1; fc+1=fc; fc=d; strcpy(e,ac+1); strcpy(ac+1,ac); strcpy(ac,e); cout去掉一个最高分:endl; couta5endl; coutf5endl; cout去掉一个最低分:endl; couta0endl; coutf0
11、endl; for(c=1;c=0;c-) strcpy(ac,ac-1); fc=fc-1; for(c=1;c5;c+) strcpy(ac-1,ac); fc-1=fc; d=0; for(b=0;b4;b+) d+=fb; d=d/4; cout余下的评委及分数为:endl; for(b=0;b4;b+) coutabendl; coutfbendl; cout平均分为:endl; coutdendl; 10、 编写一程序,从键盘输入两个长度均不超过20的字符串,将两个字符串连接起来形成一个新的字符串,并将该新字符串中的数字字符删除。(不要使用strcat()函数。)#include#
12、include#includevoid main() char a40,b20; int c,d,e,f,g; cout请输入数组a的字符串且保证长度不超过20endl; gets(a); cout请输入数组b的字符串且保证长度不超过20endl; gets(b); c=strlen(a); d=strlen(b); for(e=c;e=d+c;e+) ae=be-c; d=strlen(a); for(f=0;fd;f+) g=0; for(e=0;e=0&ae=9) g=1; for(c=e;cd;c+) ac=ac+1; if(g=0) break; coutas2,输出1;若s1=s2
13、,输出0;若s1s2,输出-1。(不使用strcmp()函数)。最后将你的程序结果与直接调用strcmp()函数得到的结果相比较,看是否相同。#include#include#includevoid main() char s110,s210; int c,d,e,f; cout请输入数组s1的字符串且保证长度不超过10endl; gets(s1); cout请输入数组s2的字符串且保证长度不超过10endl; gets(s2); c=strlen(s1); d=strlen(s2); if(cd) c=d; f=0; for(e=0;es2e) f=1; cout1endl; break;
14、else if(s1es2e) f=1; cout-1endl; break; if(f=0) cout0endl; coutstrcmp(s1,s2)endl; 12、 实型变量Y与整形变量a和x的关系如式所示。编写函数程序,要求输入变量a和x,输出相应的Y。在主函数中演示函数调用过程。小数点后精确到第三位。 #include #include double s(double y, int x,int a);double main()int X,A;double Y;coutplease input X and A.endl;coutX;coutA;coutsetiosflags(ios:f
15、ixed);cout计算后结果为:setprecision(3)s(Y,X,A)endl; double s(double y, int x,int a)y=13*x/5.0+a*a*a;return y;13、 实型变量x与y的函数关系如式,编写函数实现,并在主函数中演示函数调用过程。 #includefloat main() float hs(float x); float x; coutPlease input x:x; couths(x)endl; return 0;float hs(float x) float y; if(x1) y=x; else if(x10) y=3*x+1;
16、 else y=5*x-7; return y;14、 分别编写迭代函数和递归函数实现功能:逆序输出正整数的各个位,并在主函数中同时调用迭代函数和递归函数,比较结果是否相同。#include#includevoid dd(int n) int a,b; do a=n; n/=10; b=a%10; coutb; while(n!=0); coutendl;int dg(int n) int b,c,d,e,f; b=n/10; f=n; e=0; do f/=10; e+; while(f!=0); f=e; if(n=0) c=0; else d=n-10*b; e=pow(10,f-1);
17、 c=e*d+dg(n/10); return c;int main() int k; cout请输入n:k; dd(k); coutdg(k)endl; return 0;五、分析与讨论通过这次试验,我对数组的定义及运用有了一个更深刻地了解,同时也学会了如何运用数组处理一些编程问题。六、教师评语(1)正确。只是程序中出现的“n”意义不是很明确。(2)正确(3)正确。(4)正确。(5)正确(6)正确。(7)正确(8)正确。(9)正确。(10)正确。(11)正确。(12)正确(13)正确。(14)正确。无抄袭行为;按时完成实验;实验结果基本正确;实验报告撰写认真、格式符合要求;实验内容和过程记录完整,结构较清晰;建议该生多进行练习。签名:叶焕倬日期:2011年11月20日成绩
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1