实验3、循环结构程序设计(有答案)

  • 格式:doc
  • 大小:48.50 KB
  • 文档页数:4

循环结构程序设计

1. 程序填空

下面程序的功能为:计算1~100之间的偶数之和,完成以下的程序并运行出正确的结果。

# include

void main()

{int i,s=0;

/**************found*************/

i=2

;

while(i<=100)

{s=s+i;

/**************found**************/

i+=2 ;

}

printf(“s=%d”,s);

}

运行结果:S=2550

2. 程序改错

(1) 下面程序的功能为:计算10!,修改以下的程序并上机运行通过。

#include

void main()

{int n,t;

for(n=1,t=1,t<10,t++);

n=n*t;

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

}

正确的程序:

#include

void main()

{int n,t;

for(n=1,t=1;t<=10;t++) //句尾不能有“;”

n=n*t;

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

}

运行结果:10!=3628800

(2) 下面程序的功能为:计算1~100之间能被3和7整除的数之和,修改以下的程序并上机运行通过。

#include

void main()

{int i,s;

s=0;

while(i<=100);

{if(i%3==0||i%7==0)

s+=i;

i=i+1;

}

printf(“s=%d”,s);

}

正确的程序:

#include

void main()

{int i,s;

s=0; i=1;

while(i<=100) //句尾不能有“;”

{if(i%3==0&&i%7==0)

s+=i;

i=i+1;

}

printf(“s=%d”,s);

}

运行结果:S=210

3、有一个分数序列:2/1、3/2、5/3、8/5、13/8、……,编写一个C程序,求出这个数列的前30项之和。

解:

方法一、单个函数模块:

#include

void main()

{

int i=1;

double t,x=1,y=2,sum=0;

while(i<=30)

{

sum=sum+y/x;

t=y;

y=y+x;

x=t;

i++;

}

printf("%f\n",sum);

}

方法二、多个函数模块:

#include

double fun(int n)

{ double a=1,b=2;

double result=0.0;

int i;

for(i=0;i

{

result+=b/a;

b=a+b;

a=b-a;

}

return result;

}

void main()

{int n=30;

printf("%f\n", fun(n));

}

运行结果:48.840601

4、编写程序,求1!+2!+3!+…+10!。

解法一、递推法:

#include

void main()

{int i;

int sum=0,f=1;

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

{f= f*i;

sum= sum+f;

}

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

}

解法二、递归法:

/*递归计算单个整数的阶乘*/

#include

int sum = 0;

int CountSum(int value)

{

if(value == 1) return 1;

else

return value * CountSum(value - 1);

}

void main()

{ int i; for(i = 1; i <= 10; i++)

{ /*累加*/

sum += CountSum(i);

}

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

}

运行结果:sum=4037913