实验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