1、程序设计基础C实验报告 2程序设计基础C实验报告教学班级:112160204 学号:11216020402 姓名:曹四川课程教师:_肖朝辉_ 实验辅导教师:_肖朝辉_重庆理工大学计算机学院 2012年2月实验6 循环程序设计教学班级:112160204 学号:11216020402 姓名:曹四川实验日期:_ 实验地点:_(机房) 实验成绩:_ 一、实验目的1. 了解C语言循环结构的使用范围。2. 学会正确使用逻辑运算符和逻辑表达式。3. 熟练掌握C语言的三种循环结构:whilc语句、do_while语句、for语句的特点和使用方法。4. 能够编写一些有实际应用意义的循环结构程序。二、实验内容1
2、基本内容题目1:编写一个自然数1至n的累加程序(如:1+2+3+n)。(使用goto语句)(文件名:f1.cpp): #include void main() int i,a,n; a=i=0; printf(“n=“); scanf(“%d”,&n); E: i+; a+=i; if (in) goto E; else printf(“n a=%d”,a); 输入10,程序运行结果是: a=55 把该程序用for循环语句进行改写 程序代码: #include void main() int i,n,sum=0; scanf(“n=%d”,&n);for(i=0;i=n;i+)sum=sum+
3、i;printf(“sum=%d”,sum); 题目2:计算135799+101的值(提示:注意符号的变化)(文件名:f2.cpp) #include void main() int i,t=1,s=0; /* t标识符号 */ for (i=1;i101; i+=2) /*error*/ s+=i*t; t= -t; printf(“s=%dn”,s); 修改:for(i=1;i=101;i+=2)以上程序运行结果不对,请将标有”erro”处改正。改正后,程序执行结果 s=51 题目3:阅读下列程序,预测其输出结果,并上机验证。(文件名:f3.cpp)#includevoid main()
4、int i=1,n; long s=1; scanf(%d,&n); while(i) s*=i; i+; if(in) break; printf(s=%ldn,s); 程序运行结果是: n=5 s=120 不使用break语句,此程序应如何修改? for(i=1;i=n;i+) 题目4:下面程序的功能是打印100以内个位数为6且能被3整除的所有数,选择合适的语句填入该空格中。(文件名:f4.cpp)#includevoid main() int i,j; for(i=0; i=10 ;i+) j=i*10+6; if( j%3!=0 ) continue; printf(%d,j);题目5
5、:编写一个把小写字母转换为大写字母的程序。要求敲入”/”,则停止转换。(文件名:f5.cpp) #include void main() char c,d; putchar(); do c=getchar(); c=(a=c)&(c); while(c!=/); /* 判断是否是”/”,则停止转换 */ 运行程序,输入2AabcEfgAB/程序运行结果是: 2AABCEFGAB/ 将第9行改为:if (c=n) 再运行程序,输入2AabcEfgAB/程序运行结果是: 2AABCEFGAB/ 2选择内容题目6:根据公式 求e的近似值,精度要求为10-6(文件名:f6.cpp)include vo
6、id main() int i; double e,n; e=1.0; n=1.0; for (i=1;n=1e-6;i+) n/=(double)i; e+=n; printf(“e=%fn”,e); 完善程序,运行结果: e=2.718282 题目7:打印出如下图案(文件名:f7.cpp)*#include void main()int i,j; for(i=1;i=4;i+) for(j=1;j=8-i;j+) /理解数字8的作用 printf( ); for(j=1;j=1;i-) for(j=1;j=8-i;j+) printf( ); for(j=1;j=2*i-1;j+) pri
7、ntf(* ); printf(n); 运行以上程序,验证实验结果。 模仿上面程序,打印出如下图案 1 2 2 2 3 3 3 3 3程序代码: #include void main() int i,j; for(i=1;i=3;i+)for(j=1;j=8-i;j+)printf(“ “)for(j=1;j=2*i-1;j+)print(“%d”,i);Printf(“n”);题目8:编写程序:打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=13+53+33。(文件名:f6.cpp)int a,b,c,m,
8、m;for(a=1;a=9;a+)for(b=0;b=9;b+)for(c=0;c=9;c+)m=a*a*a+b*b*b+c*c*c;n=100*a+10*b+c;if(m=n)printf(“%d”,m);3、实验结果(用截图说明)1234567四、调试心得(选作)实验7,8 数组实验教学班级:_ 学号:_ 姓名:_实验日期:_ 实验地点:_(机房) 实验成绩:_ 一、 实验目的1. 理解数组与普通变量的区别及特点;2. 掌握一维数组和二维数组的定义、赋值和输入输出的方法;3. 掌握字符数组和字符串函数的使用;4. 掌握与数组有关的程序与算法。二、 实验任务1基本内容实验7:题目1:阅读以下
9、程序(文件名:g1.cpp) #include void main() int i,s=0,a10=0,1,2,3,4,5,6,7,8,9; for(i=3;i7;i+) s=s+ai; printf(“s=%dn”,s); 程序的功能: 求a3到a6数组的和 程序运行结果: s=18 题目2:阅读以下程序(文件名:g2.cpp)#includevoid main() int k,s,i,a10=1,2,3,4,5,6,7,8,9,10; float ave; for(k=s=i=0;i10;i+) if(ai%2=0) continue;s+=ai;k+; if(k!=0) ave=s/k;
10、printf(“k=%d,ave=%fn”,k,ave); 程序的功能: 求奇数的和以及其和的平均数 程序运行结果: k=5,ave=5.000000 题目4:任意输入10个数,求其最大数和最小数。(文件名:g4.cpp)程序代码: #include void main() int a10,max,min,i; for(i=0;i10;i+) scanf(%d,&ai); max=min=a0; for(i=1;imax) max=ai; if(aimin) min=ai; printf(max=%d,max); printf(min=%d,min); 题目5:冒泡法对10个数排序(从小到大)
11、。(文件名:g5.cpp)#include void main() int a10;int i,j,temp; printf(Please input 10 numbers:n); for(i=0;i10;i+)scanf(%d,&ai); for(i=0;i9;i+) for(j=0;jaj+1) temp=aj; aj=aj+1; aj+1=temp; printf(The sorted numbers:n); for(i=0;i10;i+) printf(%4d,ai);理解以上程序,并编辑运行程序。将程序中第7行的数字9改为10,编译运行程序,结果怎样? 将程序中第8行的数字9改为10
12、,编译运行程序,结果怎样? 实验8:题目2:输入一串字符,计算其中空格的个数。(文件名:h2.cpp)#include #include void main()char c30; int i,sum=0; gets(c); for(i=0;istrlen(c);i+) if(ci= ) sum=sum+1; printf(空格数为:%d n,sum);题目3:(文件名:h3.cpp)#includevoid main() int i,j,row,col,min;int a34=1,2,3,4,9,8,7,6,-1,-2,0,5;min=a00;row=col=0;for(i=0;i3;i+)f
13、or(j=0;j4;j+)if(aijmin) min=aij;row=i; col=j; printf(“min=%d,row=%d,col=%dn”,min,row,col);程序的功能: 求数组中最小的数 以及它的行标和列标 程序运行结果: min=-2,row=2,col=1 题目5:预测程序结果,并编辑、运行。(文件名:h5.cpp)#include void main() char s20,s120; scanf(“%s”,s); printf(“s=%sn”,s); scanf(“%s%s”,s,s1); printf(“s=%s,s1=%s”,s,s1); puts(“n”);
14、 gets(s); puts(s);2选择内容实验7:题目6:任意输入20个数在一维数组a中,求20个数的平均值。(文件名:g6.cpp) 程序代码: #include void main() int a20,s=0,i=0,ave; for(i=0;i20;i+) scanf(%d,&ai); for(i=0;i20;i+) s=s+ai; ave=s/20.0; printf(ave=%d,ave); 题目7:任意输入10个数,判断该哪些是素数,并输出该素数。(文件名:g7.cpp)程序代码: #include void main() int a10,j,i; for(i=0;i10;i+
15、) scanf(%d,&ai); for(i=0;i10;i+) for(j=2;j=ai-1;j+) if(ai%j=0) break; if(ai=j) printf(%5d,ai); printf(n); 实验8:题目8:用字符数组存储任意输入的10字符,求该10字符中最大字符。(文件名:h8.cpp) 程序代码: #include void main() char max, str11,i;scanf(“%s”, str); max=str0;for(i=1;imax) max=stri; printf(“%c”,max); 题目9:从键盘上任意键入一个3行4列的矩阵,要求输出其转置矩
16、阵。(文件名:h9.cpp) 程序代码: #include void main() int i,j,a34,b43;for(i=0;i3;i+)for(j=0;j4;j+)scanf(“%d”,&aij);for(i=0;i3;i+)for(j=0;j4;j+)bji=aij;for(i=0;i4;i+)for(j=0;j3;j+)printf(“%5d”,bji);printf(“n”); 题目10:有5个学生,考3门功课。求出每一个学生的总分及平均分,统计平均成绩低于 60 分的学生人数。(文件名:h10.cpp)程序代码: #include void main() int a53,sum
17、5,n=0,i,j; float ave5; for(i=0;i5;i+) sumi=0; for(j=0;j3;j+) scanf(%d,&aij); sumi+=aij; /i个同学总成绩 avei=sumi/3.0; for(i=0;i5;i+) printf(第%d个同学的总分是:%d,平均分是%fn,i+1,sumi,avei); if(avei60) n+; printf(不及格的人数是:%d,n);3、实验结果(用截图说明)1、2、4、5、2、3、5、6、7、8、9、10、四、调试心得(选作)实验9,10 函数实验教学班级:_ 学号:_ 姓名:_实验日期:_ 实验地点:_(机房)
18、 实验成绩:_ 一、 实验目的1. 理解函数定义的方法。2. 掌握函数实参与形参的对应关系,以及”参数传递”的方式;3. 掌握函数的嵌套调用和递归调用的方法;4. 掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。二、 实验任务1基本内容实验9:题目1:以下程序是求3个数中的最大值(文件名:i1.cpp)#includevoid main() int a,b,c,m; int max(int x,int y); /* 函数声明*/printf(“input a,b,c=“);scanf(“%d,%d,%d”,&a,&b,&c); M=(max(a,b)c)?max(a,b):c; p
19、rintf(“m=%dn”,m);int max(int x,int y) /*函数定义*/ int z; z=(xy)?x:y; return z; 完善程序,如果输入4,2,6,程序运行结果: m=6 题目2:(文件名:i2.cpp)#includevoid main() int a3=0,2,4,6,8,10,12,14,16,sum; int func(int a3); /*函数声明*/sum=func(a); printf(“n sum=%dn”,sum);int func(int a3) /*函数定义*/ int i,j,sum=0; for(i=0;i3;i+)for(j=0;j
20、3;j+) if(i=j) sum+=aij; return sum; 程序的功能: 数组a3求和 程序运行结果: sum=24 题目3:用子函数计算10名学生1门课成绩的平均分。(文件名:i3.cpp)#includefloat average(float array10) /* 注意数据类型的一致 */ int i; float aver,sum=0; for (i=0;i10;i+) sum+=arrayi; aver=sum/10; return (aver); void main() float score10,aver;int i;printf(“n input 10 scores
21、:”);for (i=0;i10;i+) scanf(“%f”,&scorei);aver=average(score10); /* error */printf(“n average score is %5.2fn”,aver); 程序中有“error”标注处有错误,请改正,并调试运行程序。 aver=average(score) 题目4:子函数中判断一个大于1的整数是否是素数,数据由主函数中输入,并在主函数中显示结果。(文件名:i4.cpp) #includevoid main() int number; printf(“请输入一个正整数:n”);scanf(“%d”,&number);i
22、f ( prime(number) ) printf(“n %d是素数:”,number);elseprintf(“n %d不是素数:”,number);int prime(int number) int flag=1,n;for (n=2; flag=1 & n=number/2;n+)if ( number%n=0 ) flag=0;return (flag); 完善以上程序,并调试运行。实验10:题目4:该程序使用了局部变量与全局变量,理解它们的使用方式。(文件名:j4.cpp)#includeint a=3,b=5;int max(int a,int b) int c; c=ab?a:
23、b; return c;void main() int a=8; printf(“%d”,max(a,b); 局部变量: int a=9和int a,int b,int c 全局变量: int a=4,b=6 程序运行结果: 8 题目5:以下是一个求1-10累加和的错误程序,请改正。(文件名:j5.cpp)#includevoid main() int i,s; for(i=1;i=10;i+) s=sum(i); printf(s=%dt,s);sum(int j) int x=0; /* error */ x+=j; return(x);改正为: static int x=0; 2选择内容
24、实验9:题目5:子函数实现一个字符串按反序存放,在主函数中输入和输出字符串。(文件名:i5.cpp) #include#include void main() void inverse(char str);char str100; printf(“输入字符串:n”); scanf(“%s”,str); inverse(str); printf(“转换后的字符串是:%sn”,str); void inverse(char str) char t; int i,j; for (i=0,j=strlen(str); istrlen(str)/2 ; i+,j-) t=stri; stri=strj-1; strj-1=t; 运行以上程序,输入1234567*,程序运行结果是: 7654321 。将inverse函数中的for语句改为 for (i=0,j=strlen(str); istrlen(str) ; i+,j-) 再运行以上程序,输入1234567*,程序运行结果是: 1234567* 。题目6:在一个数组A中存放100个数据,用子函数判断该数组中那些是素数,并统计该素数的个数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1