C程序设计循环控制实验报告.docx
- 文档编号:15869778
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:9
- 大小:48.51KB
C程序设计循环控制实验报告.docx
《C程序设计循环控制实验报告.docx》由会员分享,可在线阅读,更多相关《C程序设计循环控制实验报告.docx(9页珍藏版)》请在冰点文库上搜索。
C程序设计循环控制实验报告
贵州大学
《C程序设计实验》
实验报告
实验名称:
循环控制
专业
电子信息科学与技术
班级
2008级1班
姓名
学号
教师
贵州大学理学院
2010年
一、实验目的:
(1)熟悉掌握使用while语句、do-while语句和for语句实现循环的方法。
(2)掌握在程序设计中循环的方法实现一些常用算法(如穷举、迭代、递推等)。
(3)进一步学习调试程序。
二、实验环境:
Windows7、MicrosoftVisualStudio2008
三、实验内容:
1、输人两个数m和n,求他们的最大公约数和最小公倍数。
程序为:
#include
voidmain()
{
intp,r,n,m,temp;
printf("请输入两个正整数:
\n");
scanf("%d,%d",&n,&m);
if(n { 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); } 运行情况: m 当m 有负数时 分析: 本程序只有一个函数,即入口函数main函数。 在main函数中,首先声明int型变量p、r、n、m、temp;接着从屏幕输入n、m的值。 在if语句中把大数放在n中,小数放在m中。 将n和m的乘积保存在p中,以便求最小公倍数时用。 在while循环中求两数的最大公约数。 保存于n中。 第一个输出语句输出最大公约数n;第二个输出语句输出最小公倍数,p/n即为最小公倍数。 2、输入一行字符,分析统计出其中的英文字母、空格、数字和其他字符的个数。 程序如下: #include voidmain() { charc; intletters=0,space=0,digit=0,other=0; printf("请输入一行字符串: \n"); while((c=getchar())! ='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; elseif(c=='') space++; elseif(c>='0'&&c<='9') digit++; else other++; } printf("字母数: %d\n空格数: %d\n数字数: %d\n其他字符数: %d\n", letters,space,digit,other); } 运行情况: 分析: 程序先声明了字符变量c用来保存获取的字符。 接着定义了letter、space、digit、other分别用了保存字符数、空格数、数字数和其他字符数,并给他们赋值为0。 然后用户在屏幕上输入一行字符串,程序用c=getchar()接收从屏幕上输入的字符。 if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; 判断保存在c中的字符是否是普通字符。 如果是,则letters加1;letters等同于letters=letters+1,以下的space++也一样。 elseif(c=='')判断c中保存的是否是空格;elseif(c>='0'&&c<='9')判断c中保存的是否是数字。 While循环一直进行,直到c中保存的为换行符“\n”为止。 最后分别把字符数、空格数、数字数和其他字符数输出。 程序结束。 3、用牛顿迭代法求方程 在1.5附近的根。 程序如下: #include #include voidmain() { floatx1,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("Therootofequationis%5.2f\n",x1); } 运行情况: 分析: floatx1,x0,f,f1;声明浮点型变量x1,x0,f,f1。 do { }while() 是先执行一遍循环,再判断是否进行下一步循环,其循环体至少运行一遍;而while语句是先判断再执行循环,其循环体可能一次也不执行。 在本程序中先执行一遍以下语句 x0=x1; f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x1=x0-f/f1; 再判断是否满足fabs(x1-x0)>=1e-5,当满足条件fabs(x1-x0)>=1e-5时,接着执行一遍循环体;当条件fabs(x1-x0)>=1e-5不满足时,跳出循环执行下一条语句 最后输出运行结果,程序执行结束。 4、猴子吃桃问题。 猴子当天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃了一半,又多吃了一个。 以后每天早上都吃了前一天的一半零一个。 到第十天早上再想吃的时候,见只剩下一个桃子。 求第一天共摘了多少个桃子。 由题意得程序: #include voidmain() { intday,x1,x2; day=9; x2=1; while(day>0) { x1=(x2+1)*2; x2=x1; day--; } printf("猴子第一天共摘了%d个桃子\n",x1); } 运行情况: 在得到正确的结果后,修改题目,改为猴子每天吃了前一天的一半后又多吃了两个,请修改程序并运行,查看运行结果是否正确。 修改后得程序 #include voidmain() { intday,x1,x2; day=9; x2=1; while(day>0) { x1=(x2+2)*2; x2=x1; day--; } printf("猴子第一天共摘了%d个桃子\n",x1); } 运行情况: 分析: 用x1保存第一天的桃子数,用x2保存第二天的桃子数。 应为第十天早上只剩下一个桃子了。 所有x2赋初值为1。 x1=(x2+1)*2;第一天的桃子数是第二天的桃子数加1后的两倍。 while(day>0) { x1=(x2+2)*2; x2=x1; day--; } 循环9次,得到第一天共摘得的桃子数。 四、实验总结。 while语句 while语句的一般形式为: while(表达式)语句;其中表达式是循环条件,语句为循环体。 while语句的语义是: 计算表达式的值,当值为真(非0)时,执行循环体语句。 do-while语句的一般形式为: do 语句; while(表达式); 其中语句是循环体,表达式是循环条件。 do-while语句的语义是: 先执行循环体语句一次,再判别表达式的值,若为真(非0)则继续循环,否则终止循环。 do-while语句和while语句的区别在于do-while是先执行后判断,因此do-while至少要执行一次循环体。 而while是先判断后执行,如果条件不满足,则一次循环体语句也不执行。 for语句 for语句是C语言所提供的功能更强,使用更广泛的一种循环语句。 其一般形式为: for(表达式1;表达式2;表达3) 语句: 表达式1 通常用来给循环变量赋初值,一般是赋值表达式。 也允许在for语句外给循环变量赋初值,此时可以省略该表达式。 表达式2 通常是循环条件,一般为关系表达式或逻辑表达式。 表达式3 通常可用来修改循环变量的值,一般是赋值语句。 这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。 三个表达式都是任选项,都可以省略。 一般形式中的“语句”即为循环体语句。 for语句的语义是: 1.首先计算表达式1的值。 2.再计算表达式2的值,若值为真(非0)则执行循环体一次,否则跳出循环。 3.然后再计算表达式3的值,转回第2步重复执行。 在整个for循环过程中,表达式1只计算一次,表达式2和表达式,3则可能计算多次。 循环体可能多次执行,也可能一次都不执行。 2010年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 循环 控制 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)