C实验报告1参考答案

#include main() {

int m;

printf(\请输入数字(0-6):\ scanf (\ switch (m) {

case 0:printf (\ case 1:printf (\ case 2:printf (\ case 3:printf (\ case 4:printf (\ case 5:printf (\ case 6:printf (\ default:printf (\数据输入错误。\ } }

实验5 循环结构程序设计

一、实验目的

1.掌握循环结构程序设计的3种控制语句——while语句、do···while语句、for语句的使用方法。

2.了解用循环的方法实现常用的算法设计。

二、实验内容

1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。) (1)下列程序的功能为:求1~100之和(和值为5050)并输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_1.c保存。

该程序的运行结果: #include

The sum from 1 to 100 is 5050 main()

{

int i,sum=0; i=1;

while(i<100) while(i<=100) sum=sum+i; { sum=sum+i; i++; i++;} printf(“The sum from 1 to 100 is %d\\n”,sum); }

(2)下列程序的功能为:倒序打印26个英文字母。纠正程序中存在的错误,以实现其

16

该程序的运行结果: 功能,程序以文件名sy5_2.c保存。

#include main() {

char x; x='z';

while(x!='a') while(x!='a'-1)或while(x>='a') {

printf(\ printf(\c\ x++; x- -; } }

(3)下列程序的功能为:输入一个大写字母,打印出一个菱形。该菱形中间一行由此字母组成,其相邻的上下两行由它前面的一个字母组成,按此规律,直到字母A出现在第一行和最末行为止。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_3.c保存。例如,输入字母D,打印出如下图形:

#include main() {

int i,j,k; char ch;

scanf(\ k=ch-'A'+1;

for (i=1;i<=k;i++) {

for (j=20;j>=i;j--) printf(\

for (j=1;j<=i-1;j++) for (j=1;j<=2*i-1;j++) printf(\ printf(\ }

k=ch-'A';

for (i=k;i>=1;i--)

{ for (i=20;i>=i;i--) for (j=20;j>=i;j--) printf(\

for (j=1;j<2*i-1;j++) for (j=1;j<=2*i-1;j++) printf(\ printf(\ } }

2.程序填空题

(1)用辗转相除法求两个正整数的最大公约数和最小公倍数。补充完善程序,以实现其功能,程序以文件名sy5_4.c保存。

#include

该程序的运行结果: 17

main ()

{ int r, m, n,k, t ; scanf (\ if (m

{ t=m; m=n; n=t; } /*交换两数*/ k=m*n; r = m%n; while (r)

{ m=n;

n=r;

r= m%n ; }

printf (\ %d\\n\ n , k/n ); /*输出最大公约数和最小公倍数*/ }

(2)假设有1020个西瓜,第一天卖了一半多两个,以后每天卖剩的一半多两个,求几天后能卖完。补充完善程序,以实现其功能。程序以文件名sy5_5.c保存。

#include main( ) 该程序的运行结果: { int day,x1,x2; day=8 day=0; x1=1020;

while( x1>0 ) {

x2= x1/2-2 ; x1=x2;

day++;

}

printf(\ }

(3)下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数.补充完善程序,以实现其功能。程序以文件名sy5_6.c保存。

#include main()

该程序的运行结果: { int i,j;

for(i=0; __ i<10 _____; i++) { j=i*10+6;

if (___ i%3!=0 ____)

continue;

printf(\ }

}

3.编程题(写出程序运行结果)

(1)计算1~100之间所有含8的数之和。程序以文件名sy5_7.c保存。

18

该程序的运行结果: 参考程序:

#include main() {

int i, sum=0;

for(i=1; i<=100; i++) if(i==8 || i/10==8) sum+=i;

printf(\}

(2)编写程序,利用下列近似公式计算e值,误差应小于10-5。程序以文件名sy5_8.c保存。

e?1?1111????? 1!2!3!n!参考程序:

#include

main() {

int i=0 ; long n=1; float e=0, t=1; while(t>1e-5) {

e+=t; i++; n*=i; t=1.0/n; }

printf(\}

该程序的运行结果:

(3)某学校有近千名学生,在操场上排队,若5人一行余2人,7人一行余3人,3人一行余1人。编写程序,求该校的学生总人数。程序以文件名sy5_9.c保存。

参考程序:

#include main() {int i;

for(i=900;i<=1000;i++)

19

该程序的运行结果: if(i%5==2&&i%7==3&&i%3==1) break; printf(\学生总人数=%d\\n\ }

(4)从键盘输入N个学生的学号和每人M门课程的成绩,计算每个学生的总分及平均分。输出内容包括每个学生的学号、总分和平均分。程序以文件名sy5_10.c保存。

#include void main() {

int i,j,n,m,no,score,sum; float ave;

printf(\输入学生数和每人课程数:\ scanf(\for(i=1;i<=n;i++) { sum=0; printf(\输入第%d个学生的学号: \ scanf(\ printf(\输入第%d个学生的%d门课程成绩: \ for(j=1;j<=m;j++) { scanf(\ sum+=score; } ave=(float)sum/m;

printf(\第%d个学生的学号为:%d 为:%.2f\\n\\n\

} }

20

总分为:%d 平均分

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4