计算机二级 C语言 实验报告 样本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
循环结构程序设计
一、实验目的
1.掌握三种循环语句的格式、执行与设计技巧,掌握分支程序结构与循环程序结构的配合(嵌套)使用,使用常用算法设
计相应的程序以解决实际问题;
2.实验重点——三种循环语句及循环嵌套
3.实验难点——循环嵌套
4.实验要求——重点讨论for语句及几种常用的程序设计方法:穷举、递推、迭代法
二、实验原理
1.while语句
while语句的一般形式为:
while (表达式)语句;其执行准则为当表达式的值为非0时执行while中的内嵌语句。
在表达式中,往往有一个变量用来控制循环的结束,这个变量叫循环控制变量。
在这种循环中,必须在进入循环之前给循环控制变量赋初值,而在循环体中,还要注意必须有一句使循环控制变量的值改变的语句,
2.do-while语句
一般形式为:do语句
while(表达式);
执行准则为:先执行一次指定的内嵌语句,而后判断表达式,当表达式的值为0时结束循环。
在表达式中,往往有一个变量用来控制循环的结束,这个变量叫循环控制变量。
在这种循环中,必须在进入循环之前给循环控制变量赋初值,而在循环体中,还要注意必须有一句使循环控制变量的值改变的语句,
3.for语句
一般形式为:
for(表达式1;表达式2;表达式3)语句;
执行过程为:
①先求解表达式1;
②求解表达式2,若其值为真,则执行指定的内嵌语句而后执行下一步;若其值为假,则结束循环;
③求解表达式3;
④转②;
⑤执行for下面的语句。
说明:
①一般形式中的表达式1可以省略,此时应该在for 语句前给循环变量赋初值;如for (;i<=100;i++) sum=sum+i;
②如果表达式2省略,则循环为无限循环;
③表达式3也可以省略,但此时应该另外设法保证循环正常结束;如 for (sum=0,i=1;i<=100;){sum=sum+i;i++}
④可以只有表达式2,此时完全等同于while语句;
⑤三个表达式都可以省略,此时相当于while(1)语句,循环为无限循环;如for ( ; ;)
⑥表达式1和表达式3可以是逗号表达式;
⑦表达式2一般是关系表达式。
4.break语句和continue语句
①break语句
一般形式为:break;
其作用是使流程从循环体内跳出循环体。
②continue语句
一般形式为:continue;
其作用是结束本次循环(即结束本次循环体的执行)。
三、实验内容:
1.打印水仙花数(1━━1000)。
A.程序代码
# include "stdio.h"
main()
{ int n,a,b,c;
for
(n=1;n<=999;n++){a=n/100;b=(n-a*100)/10;c=(n-a*100-b*10);/*把数n的个
位,十位,百位分离出来,a代表百位数,b代表十位数,c代表个位数*/ if (a*a*a+b*b*b+c*c*c==n) printf("%d\n",n);/*如果每一位上的数的立方之和
等于数本身,即为水仙花数,输出之*/
else continue;/*否则,去判断下一个数*/}}
B.实验结果
2.求完数(1━━1000)。
A.程序代码
# include "stdio.h"
main()
{ int i,j,n,k,s;int a[30];/*a[30]是一个整型数组,将在后绪课程中讨论. 此数
组之用途是装一个数的所有因子,由于待判断之最大数是1000,故数组维数用30,保证
足够使用*/
for (n=1;n<=1000;n=n+1)/*对于每个数都要进行判断,用此种循环较方便*/
{i=0;s=0; for (k=1;k<n;k++)/*对于k从1到n,每次增加1,判断k 是否是n的因子*/
if (n%k==0) {++i;a[i]=k;/*如果n被k除尽了,则k是因子,将其放入a[i]中,i初值为0,
每当出现一个因子时,其值自动增1,以便确定相应的下标*/}else continue;
for (j=1;j<=i;j++) s=s+a[j];/*对于n的所有因子求其和,放入s 中*/
if (s==n) /*如果s与n相等,即一个数的所有因子之和等于数本身,此数为完数,输出之*/
{printf("%d ",n);printf("its fators are: ");/*它的因子是:*/ for (j=1;j<=i;j++)
if (j<i) printf("%d ,",a[j]);/*逐个输出因子*/
else printf("%d",a[j]);printf("\n");/*否则,即s和n不相同时,n不是完数,中断本次
循环,去判断下一个n是否是完数*/}
else continue;}}
B.运行结果
3.猴子吃桃问题。
A.程序代码
# include "stdio.h"
main()
{ int s,k,i=1;
for (k=100;k<=108;k++)i=i*2+2;
printf("s=%d\n",i);
}
B.程序运行结果
4.求两个数的最大公约数和最小公倍数。
A.程序代码
# include "stdio.h"
main()
{ int m,n,k,maxmn,minmn,gongyue,gongbei; scanf("%d,%d",&m,&n);
if (m>n) {maxmn=m;minmn=n;}
else {minmn=m;maxmn=n;}
for (k=minmn;k>=1;k--)
if (m%k==0&&n%k==0) {gongyue=k;break;}
for (k=minmn;k<=m*n;k++)
if (k%m==0&&k%n==0) {gongbei=k;break;}
printf("gongbei=%d\n",gongbei);
printf("gongyue=%d\n",gongyue);
}
B.程序运行结果
5.用Xn+1=(Xn+a/Xn)/2求a^(1/2)。
A.程序代码
# include "stdio.h"
# include "math.h"
main()
{ float x,y0,y1,y2;
scanf("%f,%f",&x,&y0);
y1=(y0+x/y0)/2;
while (fabs(y1-y0)>=1e-5)
{y0=y1;y1=(y0+x/y0)/2;}
printf("y1=%f\n",y1);
}
B.程序运行结果
四、实验总结
通过本次实验,基本掌握了三种循环结构的程序设计,对于循环次数不确定的情况,使用while循球和do while循环比较合适(当然也可以使用for循环),而对于循环次数确定的情况,使用for循环比较合适(当然也可以使用前两种)。
总而言之,C语言的三种循环结构其中的任何一种可以完成任何循环问题的程序设计。
如果要想循环不是在进行到底时结束,可以使用break语句中途脱离循环,如果要想循环体中的语句在某种情况下不执行,可以使用continue语句。
附:
一.实验报告填写要求
实验报告填写要求(一共有五部分)
1.实验目的
掌握……,了解…….,使用……进行程序设计;
2.实验原理
此部分写有关题目所使用的理论与概念知识;
3.实验题目
(1)
(2)
(3)
…
注:把教师布置的报告作业题目重新编号写于此.
4.程序设计
(1)
(2)
(3)
…
注:每一个程序之后都要写运行结果(3、4两项可以合并成一项).
5.实验总结
此部分结合实验结果书写关于有关知识的理解情况.
二、判实验报告基本原则
1.明显抄袭者小于等于60分
2.内容不充实者小于等于60分
3.缺项者每缺一项扣10分。