c语言循环结构
实验八 循环结构
1.下面是一个计算e的近似值(使误差小于给定的δ)的程序。
main( )
{
double e=1.0,x=1.0,y,detax;
int i=1;
printf("\n please input enter a data:");
scanf("%lf",&detax);
y=1/x;
while(y>=detax)
{
x=x*I; //未定义变量I
y=1/x;
e=e+y;
++i;
}
printf("%12.10lf",e);
}
detax各是什么值时,能分别使程序按下面的要求运行:
不进入循环;
只循环一次;
只循环两次;
进入死循环(程序将永远循环下去)。
为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?
(3)原程序中while语句中的y>=detax,分别换成y>detax,y=detax,y
(4)把原程序中while 语句之前的y=1/x 语句去掉,观察程序的运行将会发生什么样的变化。假如不知道机器内的程序实际上是怎么写的,输入什么样的detax 就能测试出少了上述这条语句。
(5)若把原程序中的++i 换成i++,观察程序的运行发生了什么变化?
(6)把原程序中的while 结构改写成do—while 结构,再分别按上述的(2)、(3 )两步进行实验。
3(1)#include
main()
{ int m,n,sign,t;
scanf("%d%d",&m,&n);
while(m*n)
{
if (m>=0&&n>=0||m<=0&&n<=0) sign=0;
else sign=1;
m=m>0?m:-m; n=n>0?n:-n;
t=0;
while(n--) t+=m;
printf("\nThe result is:");
if (sign) printf("-");
printf("%d\n",t);
scanf("%d%d",&m,&n);
}
}
(2)main()
{int k=1;
while(k<=20)
if(++k%4!=2) continue;
else printf(‘%d”,k);
printf(“\n”);
}
(3)main( )
{ int n=4;
while(n- -)printf("%d ",- -n);
}
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1
7.(选做题)已知2001年1月1日是星期一,编写程序,在屏幕上输出2000年的年历。关于闰年的计算方法:如果某年的年号能被400除尽, 或能被4除尽但不能被100除尽,则这一年就是闰年。
8.运行程序,分析并观察运行结果
main()
{
int i;
clrscr();
for ( i=1;i<=20;i++)
if(i%4==0)printf(“%d\n”, i);
}
9.验证程序输出结果
(1)main( )
{ int i;
for(i=1;i<6;i++)
{ if(i%2){printf("#");continue;}
printf("*");
}
intf("\n");
}
(2)main()
{ int x,i;
for(i=1;i<=100;i++)
{ x=i;
if(++x%2= =0) /*当x==28的时候,这句等价于if(29%2==0)吗?*/
if(++x%3= =0) /*当x==70的时候,这句等价于if(72%2==0)吗?*/
if(++x%7= =0)
printf("%d ",x);
}
}
(3)main()
{int a=1,b;
for(b=1;b<=10;b++)
{if(a>=8)break;
f(a%2= =1){a+=5;continue;}
a-=3;
}
printf("%d\n",b);
10.下列程序计算SUM的值。调试该程序,使之能正确地计算SUM。写出调试过程。计算公式如下:
SUM= 1 +2 - 3+4 - 5+ …… -n
main(