大一上期C语言实验报告5 循环控制语句
- 格式:docx
- 大小:131.96 KB
- 文档页数:4
实验5 循环控制1.实验目的、要求熟练掌握用while语句、do-while语句和for语句实现循环的方法。
掌握在程序设计中应用循环的方法实现一些常用算法,进一步学习调试程序。
2.实验内容(1)编写程序分别应用while语句、do-while语句和for语句,求出100以内所有奇数的和。
while语句:#include "stdio.h"void main(){int i,sum=0;i=0;while(i<=49){sum=sum+2*i+1;i++;}printf("%d\n",sum);}运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按任意键返回源程序行,按ctrl+F9运行,按alt+F5看结果,结果显示:2500分析:与自己预想结果相同。
在定义变量时可以不赋初值,而在下一个语句中再赋值。
如:定义变量赋初值int i=1,sum=0;先定义变量后赋值int i,sum=0;i=1;使变量自动增减的方法也有多种,一种是赋值法如i=i+1;另一种是使用自加运算如i++。
do-while语句:#include "stdio.h"void main(){int i,sum=0;i=1;do{sum=sum+2*i-1;i++;}while(i<=50);printf("%d\n",sum);}运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按任意键返回源程序行,按ctrl+F9运行,按alt+F5看结果,结果显示:2500分析:与自己预想结果相同for 语句:#include "stdio.h"void main(){int i,sum=0;for(i=1;i<=50;){sum=sum+2*i-1;i++;}printf("%d\n",sum);}运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按任意键返回源程序行,按ctrl+F9运行,按alt+F5看结果,结果显示:2500分析:与自己预想结果相同(2)编写程序输出所有的“水仙花数”,“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身,例如:153是一个“水仙花数”,因为153=333351++。
c语言实验常熟理工学院《C语言程序设计》实验指导与报告书______学年第____ 学期专业:___________________________________________ 学号:___________________________________________ 姓名:___________________________________________ 实验地点:___________________________________________ 指导教师:___________________________________________计算机科学与工程学院2014实验5 循环结构程序设计(1)5.1 实验目的1.掌握while 、do …while 循环语句的使用方法。
2.掌握break 语句在循环语句中的作用。
3.熟悉递推、迭代等常规算法。
5.2 示例程序【实验5.1】使用下面公式求π的近似值,要求直到某一项的绝对值小于10-6为止。
+-+-=71513114π程序代码:#include #include int main() {int f; float pi,t,n;pi=0; f=1; t=1; n=1.0; /* 变量赋初值 */ while(fabs(t)>1e-6) /* 满足条件进入循环 */ {pi=pi+t; /* 累加一项 */ n=n+2; /* 分母增加2 */ f=-f; /* 改变累加项的负号 */ t=f/n;/* 求出下一累加项 */} pi=pi*4;printf("pi=%10.6f\n",pi); return 0; }说明:1.fabs(t)用于求浮点数t 的绝对值,由于fabs()是数学库函数,程序中需要使用#include包含文件。
2.这种题目要分析累加前后项之间的关系,本题中后一项的分母比前一项大2。
实验五循环控制------实验报告(1)源程序:#include<stdio.h>void main(){int p,r,n,m,temp;printf("请输入两个正整数:");scanf("%d,%d,",&n,&m);if(n<m){temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}printf("最大公约数是:%d\n",n);printf("最小公倍数是:%d\n",p/n);}调试结果:--------------------Configuration: 18.51 - Win32 Debug-------------------- Compiling...18.51.c18.51.obj - 0 error(s), 0 warning(s)运行结果:(2) 源程序:#include<stdio.h>void main(){char c;int letters=0,space=0,digit=0,other=0;printf("请输入一行字符:\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++;elseother++;}printf("字母数:%d\n 空格数:%d\n 数字数:%d\n 其他字符数:%d\n",letters,space,digit,other);}调试结果:--------------------Configuration: 18.52 - Win32 Debug-------------------- Compiling...18.52.c18.52.obj - 0 error(s), 0 warning(s)运行结果:(3) 源程序:#include<stdio.h>#include<math.h>void main(){float x1,x0,f,f1;x1=1.5;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("The root of equation is %5.2f\n",x1);}调试结果:--------------------Configuration: 18.53 - Win32 Debug-------------------- Compiling...18.53.c18.53.obj - 0 error(s), 0 warning(s)运行结果:分析:x1赋值的改变不影响最后所求的根的值,只是加大了运算次数.(4) 源程序:#include<stdio.h>void main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;x2=x1;day--;}printf("total=%d\n",x1);}调试结果:--------------------Configuration: 18.54 - Win32 Debug-------------------- Compiling...18.54.c18.54.obj - 0 error(s), 0 warning(s)运行结果:修改后:#include<stdio.h>void main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+2)*2;x2=x1;day--;}printf("total=%d\n",x1);}--------------------Configuration: 18.54 - Win32 Debug-------------------- Linking...18.54.exe - 0 error(s), 0 warning(s)。
实验5 循环控制1.实验目的、要求熟悉掌握用while语句、do_while语句和for语句实现循环的方法。
掌握在程序设计中应用循环的方法实现一些常用算法,进一步学习调试程序。
2.实验内容(1)编写程序分别用while语句、do_while语句和for语句,求出100以内所有奇数的和。
#include "stdio.h"int main(){int i=1,s=0;while(i<=100){s=i+s;i=i+2;}printf("s=%d\n",s);return(0);}运行结果:屏幕显示:s=2500结果分析:此程序是用while循环求100以内所有奇数的和。
把第一个奇数1作为初值赋给i,执行while语句时,先判断表达式i<=100是否为真,1〈=100为真,所以执行循环体的语句。
循环体由一个复合语句构成,i〉100是循环结束的条件,循环体中i=i+2是最终导致i〉100的语句。
s=i+s语句实现了奇数和的计算。
每执行完一次i=i+2,都要重新判断i<=100是否为真,直到为假(i〉100)循环结束,执行循环下面的语句。
#include "stdio.h"int main(){int i=1,s=0;do{s=s+i;i=i+2;}while(i<=100);printf("s=%d\n",s);return(0);}运行结果:屏幕显示:s=2500结果分析:这个程序是用do_while语句实现上述内容。
与上一程序的区别是:do_while语句是这样执行的,先执行一次指定的循环体语句,然后判别表达式i<=100的值,当为真则返回执行循环体语句。
如此反复,直至表达式值为0。
#include "stdio.h"int main(){int i,s;for(i=1,s=0;i<=100;i=i+2)s=i+s;printf("s=%d\n",s);return(0);}运行结果:屏幕显示:s=2500结果分析:此程序是用for语句实现上面的求和计算。
XXX大学软件类实验报告课程名称:C语言程序设计学号:姓名:班级:指导教师:开课学期:学院:XXX大学教务处4. 循环嵌套的使用。
四、实验过程及内容:(运行结果请抓图到对应题目的下方)1. 程序填空题。
以下程序的功能是计算100以内所有奇数之和,通过阅读下面程序后将其补充完整。
上机运行程序,写出程序的运行结果。
实验结果:2. 先分析以下程序,写出运行结果,再上机检验。
实验结果:3. 程序填空题。
若用0~9之间不同的三个数构成一个三位数,以下程序将统计出有多少种这样的三位数。
填空使程序完成相应功能。
实验结果:4. 程序改错题。
爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,则最后剩下1阶;若每步跨3阶,则最后剩下2阶;若每步跨5阶,则最后剩下4阶;若每步跨6阶,则最后剩下5阶;只有在每步跨7阶,最后才正好1阶不剩。
实现相应功能的程序如下,找出其中存在的语法和逻辑错误并改正,然后上机验证。
实验结果:5. 编程题。
百马百担问题。
有100匹马驮100担货,大马驮3担,中马驮2担,2匹小马分驮1担,编程计算大、中、小马各有多少匹(大、中、小马的匹数均不得为0)。
输出格式:big=1,mid=2,small=3;实验代码:实验结果:6.编程题。
打印出所有的“水仙花数”。
所谓“水仙花数”是一个3位数,其各位数字的立方之和等于该数本身。
例如153=13+53+33。
实验代码实验结果:7.根据下式求s的值(要求使用循环实现):说明:结果保留4位小数。
输出结果的形式为:s=12.3456。
⼤⼀C语⾔上机实验实验报告《C语⾔程序设计》实验报告指导教师纪良浩学院通信与信息⼯程专业通信类班级0101022 学号2010210722 姓名曾⼩兵实验室S319实验题⽬:实验⼀:⽤选择法对10个整数进⾏由⼤到⼩的排序实验⼆:判断闰年实验三:求1到100的和实验四:求π的近似值实验要求:1.掌握⽤C语⾔解决实际问题的步骤;2.掌握C语⾔的语法规则及算法的表⽰;3.通过上机实验,加深对《计算机程序设计基础》课程中基本概念的理解;4.提⾼对计算机程序的编写和应⽤能⼒;实验内容及步骤:1.问题的提出与分析;2.建⽴计算模型;3.算法的确定与表⽰;4.编写程序代码;5.调试程序;6.整理结果(实验结果及分析)。
具体实验步骤实验⼀:实验步骤1.问题的提出与分析⽤选择法对10个整数进⾏由⼤到⼩的排序。
2.确定数学模型a>b>c>d>e>f>j>h>i>k4.程序编码#includevoid main(){void sort(int x[ ],int n);int*p,i,a[10];p=a;for(i=0;i<10;i++)scanf("%d",p++);p=a;sort(p,10);for(p=a,i=0;i<10;i++){printf("%d",* p);p++;} }void sort(int x[],int n){int i,j,k,t;for(i=0;i{k=i;for(j=i+1;jif(x[j]>x[k]) k=j;if(k!=i){t=x[i];x[i]=x[k];x[k]=t;}}}5.调试程序Enter dataa[1]=10↙a[2]=25↙a[3]=45↙a[4]=66↙a[5]=88↙a[6]=110↙a[7]=119↙a[8]=114↙a[9]=86↙a[10]=88610 25 45 66 88 110 119 114 86 886The sorted numbers:886 119 114 110 88 86 66 45 25 10 6.整理结果通过验算结果正确。
学生实验报告学号 : 日期 : 2014-06-22系别计算机科学与技术专业计算机科学与技术(师)班级姓名课程名称C语言程序设计课程类型专业课学时数2实验名称循环结构程序设计实验目的掌握C语言三种循环结构语句格式;理解C语言三种循环结构控制语言的执行过程;学习应用C语言三种循环结构控制语句结构构造程序;积累环境下进行程序调试经验;实验要求:实验后写实验报告。
实验内容1、输入n个数,从中找出最大数。
(n值从键盘输入);2、补充教材138页6.2题1_3三个程序,并上机运行,结合程序功能分析运行结果;3、采用C语言的三种循环控制语句设计实现教材6.5题;4、完成教材42页实验题的“国王承诺问题”。
1、设计的源程序:/*计算n个正整数中最大值*/#include "stdio.h"main(){int a,i,n,max;i=2;max=0;printf("Input two numbers:");scanf("%d%d",&n,&a); /*从键盘输入n个正整数*/while(i<=n){scanf("%d",&a);max=a>max? a:max;i++;}printf("max=%d\n",max);}运行结果:当输入五个正整数时,程序最后输出了这五个数中的最大值教材138页6.2题:(1)计算奇数求和,补充后第一个源程序为:#include "stdio.h"main(){int i,sum = 0;for (i = 1;i<=101;i += 2){sum += i;}printf("sum = %d\n",sum);}运行结果:分析:当输入50时,就得到了前50个奇数的和,与理论符合,即为2601。
(2)计算1*2*3+3*4*5+...+99*100*101的值补充后的第二个源程序为:#include "stdio.h"main(){long i;long term,sum = 0;for (i = 1;i <= 99;i = i + 2){term = i * (i + 1) * (i + 2);sum = sum + term;}printf("sum = % ld",sum);}运行结果:(3)计算a+aa+aaa+...+aa...a(n个a)的值,n和a的值由键盘输入。
广州大学学生实验报告五一、实验目的(1)熟练掌握for、while和do …while语句实现循环程序设计。
(2)理解循环条件和循环体,以及for、while和do …while语句的相同及不同之处。
二、实验设备实验设备要求每个学生一台电脑,并需装有VC++ 6.0程序。
三、实验内容(一)编写程序:求出 1,1+2,1+2+3,……数列中前n项的值。
(文件名:ch05_1.cpp)要求输入输出示例:Enter a number: 61 3 6 10 15 21(二)编写程序:从键盘上输入若干学生的成绩,统计并输出最高分和最低分成绩,当输入负数时结束输入。
(文件名:ch05_2.cpp)要求输入输出示例:Please input scores:65.5 86.4 74 92 67 91 54.5 -1Max=92.00Min=54.50(三)编写程序:有100匹马,要驮100担货物,其中,1匹大马可以驮3担,1匹中马可以驮两担,两匹小马可以驼1担,请问,大马、中马和小马可以有多少种组合。
(文件名:ch05_3.cpp)要求输入输出示例:大马2匹;中马30匹;小马68匹,大马5匹;中马25匹;小马70匹,大马8匹;中马20匹;小马72匹,大马11匹;中马15匹;小马74匹,大马14匹;中马10匹;小马76匹,大马17匹;中马5匹;小马78匹,共有6种驮法(四)编写程序:已知某正整数等差数列的前4项之和为10,前4项之积为24,经计算可得此等差数列的前六项为:1 2 3 4 5 6,前六项之和为:26。
请问:若某数列的前4项之和是26,前4项之积是880。
请输出此正整数等差数列的前六项与前六项之和(文件名:ch05_4.cpp)要求输出示例:1,2,3,4,5,6数列的前6项的和:21提示:(1)等差数列由首项和差值两项构成,用整型变量工a,d分别记录该两项。
(2)利用for循环进行求解,并且需要满足数列前4项之和为26。
成都工业学院·计算机工程学院
《程序设计基础》实验报告
1.实验目的
(1)熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利
用三种循环语句实现循环结构;
(2)掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧;
(3)进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
2.实验内容
(1)输出两个整数m和n,求它们的最大公约数和最小公倍数。
要求:
①画出算法流程图,从键盘输入m和n;
②对负数和零可不做考虑;
③运行程序,对m>n、m<n和m=n的情况进行测试,验证程序的
正确性。
(2)输出1000以内最大的10个素数以及它们的和。
要求:
①由于偶数不是素数,可以不对偶数处理;
②画出算法流程图;
③输出形式为:素数1+素数2+素数3+...+素数10=总和值。
(3)根据公式π2
6
=1
12
+1
22
+1
32
+⋯+1
n2
,求出π的值
要求:
①画出算法流程图
②以变量pi表示π,并将其定义为单精度类型,变量n定义为整形
③计算当n的取值分别为20、50、100、200时的π的值
④输出π值以及总的项数n,输出格式为“n=值,pi=值”
(4)输入一串字符(以回车键结束),统计其中数字、大写字母、小写字母以及其他字符的个数。
要求:
①画出算法流程图,通过键盘输入字符串;
②在输出字符串之前给出相应提示;
③ 按照数字、大写字母、小写字母及其他字符数的顺序输出结果
3. 流程图
4. 源程序
(2)求1000内最大的10个素数之和 #include<stdio.h> void main()
{int n,r,i,k=0,a[10],sum=0; for(n=997;n>0;n-=2) {for(i=2;i<=n-1;i++) {r=n%i;
if(r==0) break;} if(i>=n)
{a[k]=i;sum=sum+a[k]; k++; if (k==10)break; continue;} else continue;}
printf("素数%d+素数%d+素数%d+素数%d+素数%d+素数%d+素数%d+素数%d+素数%d+素数%d+=%d\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],sum);}
(1)求最大公约数和最小
公倍数
#include<stdio.h>
void main()
{int m,n,a,b,d,i=2;
printf("Enter two number:");
scanf("%d%d",&m,&n);
a=(m>n)?m:n;
b=(m>n)?n:m;
d=a;
while((a%b)!=0)
{a=d*i;
i++;}
printf("%d,%d",m*n/a,a);}
5. 运行结果
(1)求最大公约数和最小公倍数
(2)求1000内最大的10个素数之和
(3)计算π值
(3)计算π值 #include<stdio.h> #include<math.h> void main() {int n,i;float pi=0; scanf("%d",&n); i=n; do{pi+=1/pow(n,2);n--;} while(n!=0); pi=sqrt(6*pi); printf("n=%d,pi=%f",i,pi);}
(4)统计字符串中各种类型数据的个数
#include<stdio.h> void main()
{char ch[200];int i,a=0,b=0,c=0,d=0; gets(ch);
for(i=0;ch[i]!='\0';i++)
{if(ch[i]>='0'&&ch[i]<='9') a++; else if(ch[i]>='A'&&ch[i]<='Z') b++; else if(ch[i]>='a'&&ch[i]<='z') c++; else d++;}
printf("%d,%d,%d,%d",a,b,c,d);}
(4)统计字符串中各种类型数据的个数
6.出现问题及解决办法
(1)求最大公约数和最小公倍数时,为定义变量d,直接写成
while((a%b)!=0){a=a*i; i++;}运算结果出错,原因是a的值一
直在变化,后来就增加变量d,写成while((a%b)!=0){a=d*i;i++;},运
算就正确了。
(2)求1000内最大的10个素数之和时,sum未赋初值,照成
sum=sum+a[k]语句错误,后来将0赋值给sum;判断语句的最后写成else break,造成循环语句提前结束,后经过查阅,了解break和continue语句的用法,将else break修改成else continue
(3)编写统计字符串中各种类型数据的个数的程序时将for(i=0;ch[i] !='\0';i++)中的’\0’写成’\n’,导致运算错误。
解决方法:先查阅得知字符串是以’\0’,表示字符串的结束,’\n’是换行符,转义序列的一种
7.实验心得
通过编写不同的程序,以及自己的调试,掌握了for,while,do…
while三种循环控制语句的基本使用方法,以及循环结构的嵌套使用,学会了语法错误和逻辑错误的检查方法。
还了解了break,continue语句的用法,如何使用gets函数输入字符串。