计算机二级 C语言实验报告 样本.doc
循环结构程序设计一、 实验目的1 掌握三种循环语句的格式、执行与设计技巧,掌握分支程序结构与循环程序结构的配合(嵌套)使用,使用常用算法设计相应的程序以解决实际问题;2实验重点三种循环语句及循环嵌套3实验难点循环嵌套4实验要求重点讨论for语句及几种常用的程序设计方法:穷举、递推、迭代法二、实验原理1while语句while语句的一般形式为:while(表达式)语句;其执行准则为当表达式的值为非 时执 行while中的内嵌语句。在表达式中,往往有一个变量用来控制循环的结束,这个变量叫循环控制变量。在这种循环中,必须在进入循环之前给循环控制变量赋初值,而在循环体中,还要注意必须有一句使循环控制变量的值改变的语句,2dowhile语句一般形式为:do语句while(表达式);执行准则为:先执行一次指定的内嵌语句,而后判断表达式,当表达式的值为时结束循环。在表达式中,往往有一个变量用来控制循环的结束,这个变量叫循环控制变量。在这种循环中,必须在进入循环之前给循环控制变量赋初值,而在循环体中,还要注意必须有一句使循环控制变量的值改变的语句,3for语句 一般形式为: for(表达式;表达式;表达式)语句; 执行过程为: 先求解表达式; 求解表达式,若其值为真,则执行指定的内嵌语句而后执行下一步;若其值为假,则结束循环; 求解表达式; 转; 执行for下面的语句。 说明:一般形式中的表达式可以省略,此时应该在for 语句前给循环变量赋初值;如for (;i<=100;i+) sum=sum+i; 如果表达式省略,则循环为无限循环;表达式也可以省略,但此时应该另外设法保证循环正常结束;如 for (sum=0,i=1;i<=100;)sum=sum+i;i+ 可以只有表达式,此时完全等同于while语句;三个表达式都可以省略,此时相当于while(1)语句,循环为无限循环;如for ( ; ;) 表达式和表达式可以是逗号表达式;表达式一般是关系表达式。4break语句和continue语句break语句一般形式为:break;其作用是使流程从循环体内跳出循环体。continue语句 一般形式为:continue;其作用是结束本次循环(即结束本次循环体的执行)。三、实验内容:1打印水仙花数()。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("%dn",n);/*如果每一位上的数的立方之和等于数本身,即为水仙花数,输出之*/else continue;/*否则,去判断下一个数*/B实验结果2求完数()。A程序代码# include "stdio.h"main() int i,j,n,k,s;int a30;/*a30是一个整型数组,将在后绪课程中讨论. 此数组之用途是装一个数的所有因子,由于待判断之最大数是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;ai=k;/*如果n被k除尽了,则k是因子,将其放入ai中,i初值为0,每当出现一个因子时,其值自动增1,以便确定相应的下标*/else continue;for (j=1;j<=i;j+) s=s+aj;/*对于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 ,",aj);/*逐个输出因子*/else printf("%d",aj);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=%dn",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=%dn",gongbei);printf("gongyue=%dn",gongyue);B程序运行结果5用n+1(n+n)求(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=%fn",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分