实验四 循环结构程序设计(答案)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四循环结构程序设计(解答)

1.改错题

(1)下列程序的功能为:求1~100之和(和值为5050)并输出。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c存盘。

#include

main()

{

int i,sum=0;

i=1;

while(i<100)

sum=sum+i;

i++;

printf(“The sum from 1 to 100 is %d\n”,sum);

}

改正后的程序:

#include

main()

{

int i,sum=0;

i=1;

while(i<=100)

{

sum=sum+i;

i++;

}

printf("The sum from 1 to 100 is %d\n",sum);

}

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

#include

main()

{

char x;

x='z';

while(x!='a')

{

printf("%3d",x);

x++;

}

}

改正后的程序:

#include

main()

{

char x;

x='z';

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

{

printf("%3c",x);

x- -;

}

}

(3)下列程序的功能为:输出如下的图形,要求顶端的*定位在第21字符位置,请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_3.c存盘。

*

***

*****

*******

#include

void main()

{ int i,j;

for (i=0;i<4;i++)

{ for (j=0;j<=20;j++)

printf("\n");

for (j=0;j<2*i+1;j++)

printf("*");

}

}

改正后的程序:

#include

void main()

{ int i,j;

for (i=0;i<4;i++)

{ for (j=0;j<=20-i;j++)

printf(" ");

for (j=0;j<2*i+1;j++)

printf("*");

printf("\n");

}

}

2.程序填空

(1)下列程序的功能为:用辗转相除法求两个正整数的最大公约数;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_4.c存盘。

提示:

“辗转相除法”求两个正整数的最大公约数的算法如下:

①将两数中大的那个数放在m中,小的放在n中。

②求出m被n除后的余数r。

③若余数为0则执行步骤(7);否则执行步骤(4)。

④把除数作为新的被除数;把余数作为新的除数。

⑤求出新的余数r。

⑥重复步骤(3)到(5)。

⑦输出n,n即为最大公约数。

#include

main ()

{

int r, m, n, t ;

scanf ("%d%d",&m,&n);

if (m

{ t=m; m=n; n=t; } 或t=m,m=n,n=t;

r = m%n;

while (r)

{ m=n;

n=r;

r= m%n ;

}

printf ("%d\n",n);

}

(2)下列程序的功能为:计算1020个西瓜几天后能卖完(第一天卖了一半多两个,以后每天卖剩的一半多两个);请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_5.c存盘。

#include

main()

{

int day,x1,x2;

day=0;

x1=1020;

while( x1>0 )

{

x2= x1/2-2 ;

x1=x2;

day++;

}

printf(“day=%d\n”,day);

}

(3)下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_6.c存盘。

#include

main()

{ int i,j;

for(i=0; i<10 ; i++)

{ j=i*10+6;

if ( i%3!=0 ) continue;

printf("%d",j);

}

}

3.编程题

(1)编写一个程序实现如下功能:计算1~100之间所有含8的数之和(程序以文件名sy4_7.c 存盘)。

参考程序:

#include

main()

{

int i, sum=0;

for(i=1; i<=100; i++)

if(i%10==8 || i/10==8)

sum+=i;

printf("sum=%d\n",sum);

}

(2)编写一个程序实现如下功能:用下列近似公式计算e 值,误差应小于10-5(程序以文件名sy4_8.c 存盘)。

++++=!31!21!111e …!

1n + 参考程序:

#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;

}

相关文档
最新文档