湖北理工学院14本科C语言实验报告实验三循环控制.docx

上传人:b****5 文档编号:7607597 上传时间:2023-01-25 格式:DOCX 页数:14 大小:72.01KB
下载 相关 举报
湖北理工学院14本科C语言实验报告实验三循环控制.docx_第1页
第1页 / 共14页
湖北理工学院14本科C语言实验报告实验三循环控制.docx_第2页
第2页 / 共14页
湖北理工学院14本科C语言实验报告实验三循环控制.docx_第3页
第3页 / 共14页
湖北理工学院14本科C语言实验报告实验三循环控制.docx_第4页
第4页 / 共14页
湖北理工学院14本科C语言实验报告实验三循环控制.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

湖北理工学院14本科C语言实验报告实验三循环控制.docx

《湖北理工学院14本科C语言实验报告实验三循环控制.docx》由会员分享,可在线阅读,更多相关《湖北理工学院14本科C语言实验报告实验三循环控制.docx(14页珍藏版)》请在冰豆网上搜索。

湖北理工学院14本科C语言实验报告实验三循环控制.docx

湖北理工学院14本科C语言实验报告实验三循环控制

湖北理工学院14本科C语言实验报告实验三循环控制

实验三循环控制

实验课程名:

C语言程序设计

专业班级:

14电气工程2班学号:

201440210237姓名:

熊帆

实验时间:

4.28-5.5实验地点:

K4-207指导教师:

祁文青

一、实验目的和要求

1.熟悉掌握用for语句,while语句和do_while语句实现循环的方法。

2.掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。

二、实验内容

1.下面程序求1+…+100,填空,实现该功能。

#include

voidmain()

{

ints,i;

s=0;/*第5行*/

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

s=s+i;

printf("1+...+100=%d\n",s);

}

解答:

1,源代码:

#include

voidmain()

{

ints,i;

s=0;

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

s=s+i;

printf("1+...+100=%d\n",s);

}

(2)运行结果:

(3)运行结果分析:

考察for循环语句的运用,i的初值为1,当满足i<=100时就会执行for语句

下面的一条语句,s的值一直累加,直到i=101跳出for循环,输出最终结果,为5050

2.比较下列两个程序。

(验证)

#include

voidmain()

{inti,n,sum=0;

scanf("%d",&i);

n=i;

while(i<=10)

{sum+=i;

i++;

}

printf("%d+...+10=%d",n,sum);

}

#include

voidmain()

{inti,n,sum=0;

scanf("%d",&i);

n=i;

do

{sum+=i;

i++;

}while(i<=10);

printf("%d+...+10=%d",n,sum);

}

分别运行这两题,若输入7,这两个程序的结果分别是多少,若输入12,这两个程序的结

果又分别是多少,比较为什么会有这样的区别,

解答:

1,源代码:

程序1:

#include

voidmain()

{

inti,n,sum=0;

scanf("%d",&i);

n=i;

while(i<=10)

{sum+=i;

i++;

}

printf("%d+...+10=%d",n,sum);}

程序2:

#include

voidmain()

{

inti,n,sum=0;

scanf("%d",&i);

n=i;

do

{

sum+=i;

i++;

}

while(i<=10);

printf("%d+...+10=%d",n,sum);

}

2,运行结果:

输入7时,两个程序的运行结果分别如下图

输入12时,两个程序的运行结果分别如下图

(3)运行结果分析:

程序1和程序2分别用到的分别是while型循环和dowhile循环。

当输入7

时,i<=10对两个程序来说都是成立的,但是程序1是先判断再执行,而程序2是先执行

再判断,但不影响最后的结果,输出都是34。

但是当输入12的时候,由于程序1是先判

断再执行,由于i<=10为假,故输出为0。

而程序2是先执行再判断,不管输入是什么整

数值,都至少会执行一遍,所以还是执行了一遍,最终输出和输入结果一样,都是12。

3.下面程序,若输入12345,分析输出结果是多少,上机验证。

#include

voidmain()

{longdata;

scanf("%ld",&data);

while(data)

{printf("%ld,",data%10);

data=data/10;

}

}

解答:

1,源代码:

#include

voidmain()

{

longdata;

scanf("%ld",&data);

while(data)

{

printf("%ld,",data%10);

data=data/10;

}

}

(2)运行结果:

(3)运行结果分析:

data的定义为长整型,当输入12345时,while(data),则进入一个while循

环,先输出12345除以10的余(加一个逗号),即输出12345的个位数。

再令data等于

12345除以10的模,从而data等于1234,再次,输出1234除以10的余(加一个逗号),

即输出12345的十位数。

接下来依次类推,最终实现输出5,4,3,2,1。

4.下面程序实现求Fibonacci数列的前n个数。

(验证、调试)

,1n1n2或,,F,nF,Fn,3n,1n,2,

运行程序,写出运行结果;采用单步跟踪技术运行该程序,观察一下变量的变化。

#include

voidmain()

{longintf1,f2;

inti,n;

printf("Inputn:

");/*第5行*/

scanf("%d",&n);/*第6行*/

f1=f2=1;

for(i=1;i

{printf("%ld\t%ld\n",f1,f2);/*第9行*/

f1=f1+f2;

f2=f2+f1;

}

}

解答:

1,源代码:

#include

voidmain()

{

longintf1,f2;

inti,n;

printf("Inputn:

");/*第5行*/

scanf("%d",&n);/*第6行*/

f1=f2=1;

for(i=1;i

{

printf("%ld\t%ld\n",f1,f2);/*第9行*/

f1=f1+f2;

f2=f2+f1;

}

}

(2)运行结果:

调试过程

(3)运行结果分析:

验证了2个值,分别为2和9。

当输入n=2时,输出1行值,为11。

当输入n=9时,输出8行值,如上图所示。

【关于Fibonacci数列:

斐波那契数列指的是这样一个数列0,1,1,2,3,5,8,13,21,34,55,89,

144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368

特别指出:

第0项是0,第1项是第一个1。

这个数列从第三项开始,每一项都等于前两项之和。

5.下面程序,写出预习结果并上机验证。

(验证)

#include

voidmain()

{

inti,j,x;

for(i=0,x=0;i<2;i++)

{

x++;

for(j=0;j<3;j++)

{

if(j%2)continue;

x++;

}

x++;

}

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

}

思考:

用一句话概括if(j%2)语句的作用。

解答:

(1)运行结果:

(2)运行结果分析:

if(j%2)语句的作用实际上就是判断j是否为奇数。

如果能整除2就执行,不能整除就不执行,通过continue跳出本次循环。

即如果j%2=0就执行x++,j%2!

=0就通过continue跳出本次循环。

通过for循环的嵌套与continue语句的结合,使得最终输出结果为8。

6.下面程序输入一批考试分数,用,1作为结束标志,若输入大于100分,则提示重新输入,然后计算最高分、最低分与平均分。

请调试、检查程序中的错误,并改正之。

#include

voidmain()

{intmark;

intn=0;sum=0;

intmax=100;min=0;

for(;;);

{scanf("%d",&mark);

if(mark>100)

{printf("Mark>100,Pleasereinput\n");

break;

}

if(mark=-1)

break;

n++;

sum=sum+mark;

if(mark>max)

max=mark;

if(mark

min=mark;

}

sum=sum/n;

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

}

解答:

1,源代码:

#include

voidmain()

{

intmark;

intn=0,sum=0;

intmax=100,min=0;

for(;;)

{

scanf("%d",&mark);

if(mark>100)

{

printf("Mark>100,Pleasereinput\n");

break;

}

if(mark=-1)

break;

n++;

sum=sum+mark;

if(mark>max)

max=mark;

if(mark

min=mark;

}

sum=sum/n;

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

}

(2)运行结果:

(3)运行结果分析:

int语句有误,定义多个变量的时候应该使用逗号隔开。

还有一个错误是for

语句后来不能要分号,应该去掉。

运行时输入了10个分数值,并以-1作为结束标志,计算出最高分,最低分和平均分,实验结果与

预期一致。

7.编程:

输入20个1,90的整数,分类统计1,30、31,60、61,90的数各有多少个,

解答:

1,源代码:

#includevoidmain()

{

intcount1=0,count2=0,count3=0;

inti,x;

printf("请输入20个数:

\n");

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

{

scanf("%d",&x);

if(x>=1&&x<=31)

count1++;

if(x>=31&&x<=60)

count2++;

if(x>=61&&x<=90)

count3++;

}

printf("count1=%d,count2=%d,count3=%d\n",count1,count2,count3);

}

2,运行结果:

(3)运行结果分析:

用三个if语句与for循环结合,输入了20个数字,验证结果与预期一致,如上图所示。

8.编程:

素数是除了1和其本身以外,不能被其他自然数整除的自然数。

从键盘输入一个数,判断该数是不是素数,

解答:

1,源代码:

#include

voidmain()

{

inta,b;

printf("请输入一个数:

");

scanf("%d",&a);

for(b=2;b<=a-1;b++)

{

if(a%b);

else

break;

}

if(b==a)

printf("它是一个素数\n");

else

printf("它不是一个素数\n");

return0;

}

2,运行结果:

(3)运行结果分析:

运用for循环实现整除的过程,实验运行程序时分别输入了一个9和11,实

验结果均与预期一致。

9.编程:

显示所有的水仙花数。

谓水仙花数,是指一个3位数,其各位数字立方和等于该数字

333本身。

例,153是水仙花数,因为153=1+5+3。

有两种解题思路,选择其中之一编程实现:

(1)利用三重循环,将这三个数通过一定的运算符连接成一个3位数,然后判断是否是水仙

花数。

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

for(j=0;j<=9;j++)

for(k=0;k<=9;k++)

注意,因水仙花是一个三位数,百位i是从1开始,不能从0开始,十位j和个数位

k可以从0开始。

(2)利用一个循环,对100,999范围内的每个3位数逐位分离后进行判断。

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

{a=i/100;

b=(i-a*100)/10;

c=i%10;

………

}

解答:

1,源代码:

#include

voidmain()

{

inta,b,c;

for(a=1;a<=9;a++)

for(b=0;b<=9;b++)

for(c=0;c<=9;c++)

if((a*100+b*10+c)==(a*a*a+b*b*b+c*c*c))

printf("%d%d%d\n",a,b,c);

return0;

}

(2)运行结果:

(3)运行结果分析:

运用3个for循环语句,再判断是否满足水仙花数的条件。

实验结果如上图,

与预期结果相符。

10.编程:

输出下列图形。

*

***

*****

*******

*********解答:

1,源代码:

#include

intmain()

{

intm,n;

for(m=1;m<=5;m++)

{

for(n=1;n<=5-m;n++)

printf("");

for(n=1;n<=2*m-1;n++)

print("*");

printf("\n");

}

return0;

}

(2)运行结果:

(3)运行结果分析:

通过for循环的嵌套,通过输出空格和星号来控制最终的图像,由星号组成的

三角形。

三、结论

本次实验主要考察的是for循环的嵌套的使用~要学会用单步执行来观察程序的每一步

的运行情况~这样非常有利于理解for循环的嵌套。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1