C程序设计教程与实验 吉顺如主编 实验报告5参考答案

更新时间:2023-11-13 17:06:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《高级语言程序设计》实验报告

班级: 学号: 姓名: 成绩: 实验5 循环结构程序设计

一、实验目的

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

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

二、实验内容

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

该程序的运行结果: #include

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个英文字母。纠正程序中存在的错误,以实现其功能,程序以文件名sy5_2.c保存。

#include main() {

char x; x='z';

该程序的运行结果: The sum from 1 to 100 is 5050 while(x!='a') while(x!='a'-1)或while(x>='a') {

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

}

(3)下列程序的功能为:输入一个大写字母,打印出一个菱形。该菱形中间一行由此字母组成,其相邻的上下两行由它前面的一个字母组成,按此规律,直到字母A出现在第

1

一行和最末行为止。纠正程序中存在的错误,以实现其功能。程序以文件名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 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

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

#include main( )

{ int day,x1,x2; 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保存。

该程序的运行结果: day=8 该程序的运行结果: 参考程序:

该程序的运行结果: #include main() {

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

printf(\}

3

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

e?1?11!?12!?13!?…?1n!-5

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

#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++)

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(\输入学生数和每人课程数:\

4

该程序的运行结果: 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\

} }

5

总分为:%d 平均分

本文来源:https://www.bwwdw.com/article/srev.html

Top