程序设计基础C实验报告 2.docx
- 文档编号:9855298
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:49
- 大小:653.40KB
程序设计基础C实验报告 2.docx
《程序设计基础C实验报告 2.docx》由会员分享,可在线阅读,更多相关《程序设计基础C实验报告 2.docx(49页珍藏版)》请在冰豆网上搜索。
程序设计基础C实验报告2
《程序设计基础C》
实
验
报
告
教学班级:
112160204学号:
11216020402姓名:
曹四川
课程教师:
______肖朝辉________
实验辅导教师:
_____肖朝辉__________
重庆理工大学计算机学院
2012年2月
实验6循环程序设计
教学班级:
112160204学号:
11216020402姓名:
曹四川实验日期:
___________实验地点:
_________(机房)
实验成绩:
___________
一、实验目的
1.了解C语言循环结构的使用范围。
2.学会正确使用逻辑运算符和逻辑表达式。
3.熟练掌握C语言的三种循环结构:
whilc语句、do_while语句、for语句的特点和使用方法。
4.能够编写一些有实际应用意义的循环结构程序。
二、实验内容
1.基本内容
题目1:
编写一个自然数1至n的累加程序(如:
1+2+3+…n)。
(使用goto语句)
(文件名:
f1.cpp):
#include
voidmain()
{inti,a,n;
a=i=0;
printf(“n=“);
scanf(“%d”,&n);
E:
i++;
a+=i;
if(i gotoE; else printf(“\na=%d”,a); } ①输入10,程序运行结果是: a=55 ②把该程序用for循环语句进行改写 程序代码: #include voidmain() {inti,n,sum=0; scanf(“n=%d”,&n); for(i=0;i<=n;i++) sum=sum+i; printf(“sum=%d”,sum); } 题目2: 计算1-3+5-7+......-99+101的值.(提示: 注意符号的变化)(文件名: f2.cpp) #include voidmain() {inti,t=1,s=0;/*t标识符号*/ for(i=1;i<101;i+=2)/*error*/ {s+=i*t;t=-t;} printf(“s=%d\n”,s); } 修改: for(i=1;i<=101;i+=2) 以上程序运行结果不对,请将标有”erro”处改正。 改正后,程序执行结果s=51 题目3: 阅读下列程序,预测其输出结果,并上机验证。 (文件名: f3.cpp) #include voidmain() {inti=1,n; longs=1; scanf("%d",&n); while(i) {s*=i; i++; if(i>n)break; } printf("s=%ld\n",s); } ①程序运行结果是: n=5s=120 ②不使用break语句,此程序应如何修改? for(i=1;i<=n;i++) 题目4: 下面程序的功能是打印100以内个位数为6且能被3整除的所有数,选择合适的语句填入该空格中。 (文件名: f4.cpp) #include voidmain() {inti,j; for(i=0;i<=10;i++) {j=i*10+6; if(j%3! =0) continue; printf("%d",j);} } 题目5: 编写一个把小写字母转换为大写字母的程序。 要求敲入”/”,则停止转换。 (文件名: f5.cpp) #include voidmain() {charc,d; putchar(‘>‘); do{ c=getchar(); c=(‘a’<=c)&&(c<=‘z’)? c-32: c; putchar(c); if(c==‘\n’);//error putchar(‘>‘); }while(c! =‘/’);/*判断是否是”/”,则停止转换*/ } ①运行程序,输入2AabcEfgAB/ 程序运行结果是: 2>A>A>B>C>E> F>G> A>B>/> ②将第9行改为: if(c==‘\n’) 再运行程序,输入2AabcEfgAB/ 程序运行结果是: 2>A>A>B>C>E> F>G> A>B>/> 2.选择内容 题目6: 根据公式 求e的近似值,精度要求为10-6 (文件名: f6.cpp) #include voidmain() {inti; doublee,n; e=1.0;n=1.0; for(i=1;n>=1e-6;i++) {n/=(double)i; e+=n;} printf(“e=%f\n”,e); } 完善程序,运行结果: e=2.718282 题目7: 打印出如下图案(文件名: f7.cpp) * * * * * * * * * * * * * * * * * * * * * * * * * #include voidmain() {inti,j; for(i=1;i<=4;i++) {for(j=1;j<=8-i;j++)//理解数字8的作用 printf(""); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); }/*上面的程序输出上三角形*/ /*下面的程序输出下三角形*/ for(i=3;i>=1;i--) {for(j=1;j<=8-i;j++) printf(""); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n");} } ①运行以上程序,验证实验结果。 ②模仿上面程序,打印出如下图案 1 222 33333 程序代码: #include voidmain() {inti,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) {inta,b,c,m,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、实验结果(用截图说明) 1 2 3 4 5 ① ② 6 7 ① ② 四、调试心得(选作) 实验7,8数组实验 教学班级: _______学号: __________姓名: ___________ 实验日期: ___________实验地点: _________(机房) 实验成绩: ___________ 一、实验目的 1.理解数组与普通变量的区别及特点; 2.掌握一维数组和二维数组的定义、赋值和输入输出的方法; 3.掌握字符数组和字符串函数的使用; 4.掌握与数组有关的程序与算法。 二、实验任务 1.基本内容 实验7: 题目1: 阅读以下程序(文件名: g1.cpp) #include voidmain() {inti,s=0,a[10]={0,1,2,3,4,5,6,7,8,9}; for(i=3;i<7;i++) s=s+a[i]; printf(“s=%d\n”,s); } ①程序的功能: 求a[3]到a[6]数组的和 ②程序运行结果: s=18 题目2: 阅读以下程序(文件名: g2.cpp) #include voidmain() {intk,s,i,a[10]={1,2,3,4,5,6,7,8,9,10}; floatave; for(k=s=i=0;i<10;i++) {if(a[i]%2==0)continue; s+=a[i]; k++; } if(k! =0) {ave=s/k; printf(“k=%d,ave=%f\n”,k,ave); } } ①程序的功能: 求奇数的和以及其和的平均数 ②程序运行结果: k=5,ave=5.000000 题目4: 任意输入10个数,求其最大数和最小数。 (文件名: g4.cpp) 程序代码: #include voidmain() { inta[10],max,min,i; for(i=0;i<10;i++) scanf("%d",&a[i]); max=min=a[0]; for(i=1;i<=9;i++) { if(a[i]>max)max=a[i]; if(a[i] } printf("max=%d",max); printf("min=%d",min); } 题目5: 冒泡法对10个数排序(从小到大)。 (文件名: g5.cpp) #include voidmain() {inta[10];inti,j,temp; printf("Pleaseinput10numbers: \n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]>a[j+1]) {temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } printf("Thesortednumbers: \n"); for(i=0;i<10;i++) printf("%4d",a[i]); } ①理解以上程序,并编辑运行程序。 ②将程序中第7行的数字9改为10,编译运行程序,结果怎样? ③将程序中第8行的数字9改为10,编译运行程序,结果怎样? 实验8: 题目2: 输入一串字符,计算其中空格的个数。 (文件名: h2.cpp) #include #include voidmain() {charc[30]; inti,sum=0; gets(c); for(i=0;i if(c[i]=='') sum=sum+1; printf("空格数为: %d\n",sum); } 题目3: (文件名: h3.cpp) #include voidmain() {inti,j,row,col,min; inta[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5}}; min=a[0][0]; row=col=0; for(i=0;i<3;i++) for(j=0;j<4;j++) if(a[i][j] {min=a[i][j];row=i;col=j;} printf(“min=%d,row=%d,col=%d\n”,min,row,col); } ①程序的功能: 求数组中最小的数以及它的行标和列标 ②程序运行结果: min=-2,row=2,col=1 题目5: 预测程序结果,并编辑、运行。 (文件名: h5.cpp) #include voidmain() {chars[20],s1[20]; scanf(“%s”,s); printf(“s=%s\n”,s); scanf(“%s%s”,s,s1); printf(“s=%s,s1=%s”,s,s1); puts(“\n”); gets(s); puts(s); } 2.选择内容 实验7: 题目6: 任意输入20个数在一维数组a中,求20个数的平均值。 (文件名: g6.cpp) 程序代码: #include voidmain() { inta[20],s=0,i=0,ave; for(i=0;i<20;i++) scanf("%d",&a[i]); for(i=0;i<20;i++) { s=s+a[i];} ave=s/20.0; printf("ave=%d",ave); } 题目7: 任意输入10个数,判断该哪些是素数,并输出该素数。 (文件名: g7.cpp) 程序代码: #include voidmain() { inta[10],j,i; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { for(j=2;j<=a[i]-1;j++) if(a[i]%j==0)break; if(a[i]==j)printf("%5d",a[i]); } printf("\n"); } 实验8: 题目8: 用字符数组存储任意输入的10字符,求该10字符中最大字符。 (文件名: h8.cpp) 程序代码: #include voidmain() { charmax,str[11],i; scanf(“%s”,str);max=str[0]; for(i=1;i<10;i++) {if(str[i]>max)max=str[i];} printf(“%c”,max); } 题目9: 从键盘上任意键入一个3行4列的矩阵,要求输出其转置矩阵。 (文件名: h9.cpp) 程序代码: #include voidmain() { inti,j,a[3][4],b[4][3]; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(“%d”,&a[i][j]); for(i=0;i<3;i++) for(j=0;j<4;j++) b[j][i]=a[i][j]; for(i=0;i<4;i++) {for(j=0;j<3;j++) printf(“%5d”,b[j][i]); printf(“\n”); } } 题目10: 有5个学生,考3门功课。 求出每一个学生的总分及平均分,统计平均成绩低于60分的学生人数。 (文件名: h10.cpp) 程序代码: #include voidmain() { inta[5][3],sum[5],n=0,i,j; floatave[5]; for(i=0;i<5;i++) {sum[i]=0; for(j=0;j<3;j++) {scanf("%d",&a[i][j]); sum[i]+=a[i][j];}//i个同学总成绩 ave[i]=sum[i]/3.0; } for(i=0;i<5;i++) {printf("第%d个同学的总分是: %d,平均分是%f\n",i+1,sum[i],ave[i]); if(ave[i]<60)n++;} printf("不及格的人数是: %d",n);} 3、实验结果(用截图说明) 1、 2、 4、 5、 ① ② ③ 2、 3、 5、 6、 7、 8、 9、 10、 四、调试心得(选作) 实验9,10函数实验 教学班级: _______学号: __________姓名: ___________ 实验日期: ___________实验地点: _________(机房) 实验成绩: ___________ 一、实验目的 1.理解函数定义的方法。 2.掌握函数实参与形参的对应关系,以及”参数传递”的方式; 3.掌握函数的嵌套调用和递归调用的方法; 4.掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。 二、实验任务 1.基本内容 实验9: 题目1: 以下程序是求3个数中的最大值(文件名: i1.cpp) #include voidmain() {inta,b,c,m; intmax(intx,inty);/*函数声明*/ printf(“inputa,b,c=“); scanf(“%d,%d,%d”,&a,&b,&c); M=(max(a,b)>c)? max(a,b): c; printf(“m=%d\n”,m); } intmax(intx,inty)/*函数定义*/ {intz; z=(x>y)? x: y; returnz; } ①完善程序,如果输入4,2,6,程序运行结果: m=6 题目2: (文件名: i2.cpp) #include voidmain() {inta[][3]={0,2,4,6,8,10,12,14,16},sum; intfunc(inta[][3]);/*函数声明*/ sum=func(a); printf(“\nsum=%d\n”,sum); } intfunc(inta[][3])/*函数定义*/ {inti,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j)sum+=a[i][j]; returnsum; } ①程序的功能: 数组a[][3]求和 ②程序运行结果: sum=24 题目3: 用子函数计算10名学生1门课成绩的平均分。 (文件名: i3.cpp) #include floataverage(floatarray[10])/*注意数据类型的一致*/ {inti;floataver,sum=0; for(i=0;i<10;i++)sum+=array[i]; aver=sum/10; return(aver); } voidmain() {floatscore[10],aver; inti; printf(“\ninput10scores: ”); for(i=0;i<10;i++)scanf(“%f”,&score[i]); aver=average(score[10]);/*error*/ printf(“\naveragescoreis%5.2f\n”,aver); } 程序中有“error”标注处有错误,请改正,并调试运行程序。 aver=average(score) 题目4: 子函数中判断一个大于1的整数是否是素数,数据由主函数中输入,并在主函数中显示结果。 (文件名: i4.cpp) #include voidmain() {intnumber; printf(“请输入一个正整数: \n”);scanf(“%d”,&number); if(prime(number)) printf(“\n%d是素数: ”,number); else printf(“\n%d不是素数: ”,number);} intprime(intnumber) {intflag=1,n; for(n=2;flag==1&&n<=number/2;n++) if(number%n==0)flag=0; return(flag); } 完善以上程序,并调试运行。 实验10: 题目4: 该程序使用了局部变量与全局变量,理解它们的使用方式。 (文件名: j4.cpp) #include inta=3,b=5; intmax(inta,intb) {intc; c=a>b? a: b; returnc; } voidmain() {inta=8; printf(“%d”,max(a,b)); } ①局部变量: inta=9和inta,intb,intc全局变量: inta=4,b=6 ②程序运行结果: 8 题目5: 以下是一个求1-10累加和的错误程序,请改正。 (文件名: j5.cpp) #include voidmain() {inti,s; for(i=1;i<=10;i++) s=sum(i); printf("s=%d\t",s); } sum(intj) {intx=0;/*error*/ x+=j; return(x); } 改正为: staticintx=0; 2.选择内容 实验9: 题目5: 子函数实现一个字符串按反序存放,在主函数中输入和输出字符串。 (文件名: i5.cpp)#include #include voidmain(){voidinverse(charstr[]); charstr[100]; printf(“输入字符串: \n”);scanf(“%s”,str); inverse(str); printf(“转换后的字符串是: %s\n”,str); } voidinverse(charstr[]) {chart; inti,j; for(i=0,j=strlen(str);i str[i]=str[j-1]; str[j-1]=t; } } ①运行以上程序,输入1234567*,程序运行结果是: 7654321。 ②将inverse函数中的for语句改为 for(i=0,j=strlen(str);i 1234567*。 题目6: 在一个数组A中存放100个数据,用子函数判断该数组中那些是素数,并统计该素数的个数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计基础C实验报告 程序设计 基础 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)