实验 循环控制一,实验目的:1.熟悉用while语句,do―while语句和for语句实现循环的方法.2.掌握在程序设计中用循环的方法实现各种算法(如穷举,迭代,递推等).二,实验准备:1,复习while语句,do―while语句和for语句的特点和适用条件.2,复习continue语句和break语句的区别.3,源程序.三,实验步骤及内容:1,以下程序是用来计算S=1+2+3+…+10,请更正下列程序的错误,并上机调试.(1)main( ){ int i=1;while(i<10) {
sum+=i;++i;
}printf("sum=%d\n",sum);}(2)main( ){ int i=0,sum=0;do{ sum+=i;++i;}while(i<10);printf("sum=%d\n",sum);}(3)main( ){ int i,sum=0;for(i=1;i<10;++i)sum=sum+i;printf("sum=%d\n",sum);}2,完善程序并回答问题下列程序用来计算S=1+1/1! +1/2! +1/3! +…+1/N!main( ){ int t,n,i;float s;s=_______;t=____1_______;scanf("%d",&n);for(i=1;i<=___n________;++i){t=_t*i_____________;s=s+___1.0/t____________; }printf("s=%f\n",s);}问题:1)此程序用双循环怎么实现 请写出程序上机调试(提示:内循环计算乘,外循环实现累加). main( )
{ int t,n,i=1;
float s;
s=1.0;t=1;
scanf("%d",&n);
do{
t=t*i;
i++;
s=s+1.0/t;}
while(i<=n);
printf("s=%f\n",s);
getch();
}2)若要计算S=1/2! +1/4! +1/6! +…+1/10!,用哪种算法比较合适 请编程上机调试. #include "stdio.h"
main( )
{ int t,n,i,k;
float s;
s=0;t=1;k=2 ;
scanf("%d",&n);
for(i=2;i<=n;i=i+2)
{ for(;k<=i;k++)
t=k*t;
s=s+1.0/t;}
printf("s=%f\n",s);
getch();}
运行结果:
3,编写下列问题的源程序并上机调试.(1)输入两个正整数,求其中最大公约数和最小公倍数.main()
{
int a,b,c,d,e;
printf("please input two numbers:\n");
scanf("%d,%d",&c,&d);
if(c
{
e=c;
c=d;
d=e;
}
a=c;b=d;
while(b!=0)
{
e=a%b;
a=b;
b=e;
}
printf("公约数:%d\n",a);
printf("最小公倍数:%d\n",c*d/a);
getch();
}
运行结果
(2)输入一行字符,分别统计出其中的英文字母,空格,数字和其它字符的个数.main()
{
char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
space,digit,others);
getch();
}(3)用牛顿迭代法求方程2x^3-4x^2+3x-6=0在1.5附近的根.#include "stdio.h"
main()
{ float x=1.5;
float x1,y,k;
do{k=6*x*x-8*x+3;
y=2*x*x