




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
广州大学实验报告学院工商管理学院专业、班级12级电子商务姓名、学号洪晓雪1213800037课程名称C语言程序设计项目名称循环结构程序设计实验时间:2013年10月14日2013年10月14日实验2循环结构程序设计学院工商管理学院年级、专业、班12级电子商务姓名洪晓雪成绩课程名称C语言程序设计实验项目名称循环结构程序设计指导教师签名实验目的学习循环语句for、while和do-while语句的使用方法。学习用循环语句实现各种算法,例如穷举法、迭代法等。进一步熟悉C语言集成环境的使用方法实验原理用while循环实现数据统计问题。:从键盘输入一批任意数量的整数,统计其中不大于100的非负数数值的个数。(1)、从键盘输入一个任意整数m开始输入i=0算法流程图:从键盘输入一个任意整数m开始输入i=01.使用一个负数作为数据输入结束标志:m<0?m<0?Nm<m<=100?输出i输出ii=i+1i=i+1结束结束使用一个负数作为数据输入结束标志程序:#include"stdio.h"voidmain(){intm,counter=0;while(1)//当为真的时候执行循环程序{printf("请输入一个整数:");scanf("%d",&m);if(m<0) break;//如果输入的数为负数,则不再执行程序if(m<=100) counter++;printf("\n"); } printf("符合要求的整数个数为:%d\n",counter);}■程序调试◆实验过程原始记录:(1).输入的一组数据之间全部以空格分隔,只有最后一个数为负数,以回车键结束。如:16357–10输出结果为:由输出可知符合要求整数个数为3个。(2).输入的一组数据之间全部以空格分隔,在负数之后又有正数数据,最后一个数不为负数,以回车键结束。如:16357-109617输出结果为:由输出可知符合要求整数个数为3个。(3).输入的一组数据之间全部以空格分隔,输入数据中有多个负数,以回车键结束。如:16357–109617–877输出结果为:由输出可知符合要求整数个数为3个。(4).输入的数据中有大于100的整数。如:16357–1096117–8726766输出结果为:由输出可知符合要求整数个数为3个。(5).数据之间既用空格分隔,也用回车键分隔。如:76353762271796679617–8771966982-1631输出结果为:由输出可知符合要求整数个数为7个。(6).每输入一个数据后均按回车键。若数据为:16357–1096117–8726766输出结果为:可知无论准备输入多少数据,但只要输入一个负数,程序就立刻停止,因此个数为3个。(7).输入的第一个数据即为负数。若数据为:-7输出结果为:则当输入第一个数为负数时,可以知道输出符合要求个数为0。(8).在输入的数据中使用数值很大的整数。如:17667789876517899-10987输出结果为:则输出符合要求个数为2个。◆分析程序调试的输出结果:由(1)(2)(3)(4)(7)可知,不管输入多少个数据,一旦遇到负数且为第一次遇到负数(因为程序中含有“break”),则立即停止程序中的循环程序,并输出符合要求的整数个数;由(1)(2)(3)(5)可知,在执行程序时,若遇到大于100的数据(此时counter++无法执行,但是程序继续循环),则程序会继续执行,但该数据将不计入符合要求的整数的个数中;由(1)(2)(5)(6)(8)可知,每个数据后按回车键区分与每个数据按空格来区分是一样的,对程序的执行没有影响。■在上面的“参考程序一”中,使用了常数“1”作为循环控制的条件,这是常用的循环控制方式。请修改上面的程序,不使用常数循环条件,仍然使用while语句实现数据统计问题。#include"stdafx.h"intmain(intargc,char*argv[]){ intm,counter=0; while(m>=0) { printf("请输入一个整数:"); scanf("%d",&m); if(m<=100) counter++; else continue; printf("\n"); } printf("符合要求的整数个数为:%d\n",counter); printf("HelloWorld!\n"); return0;}2.使用输入一个数据后通过进行询问的方式决定是否继续输入下一个数据:开始开始输入输入i=0从键盘输入一个任意整数n从键盘输入一个任意整数n0=<n<=100?N0=<n<=100?Yii=i+1进入下一个数据?进入下一个数据?YN输出输出i结束结束使用输入一个数据后通过进行询问的方式决定是否继续输入下一个数据程序:#include<stdio.h>intmain(){intm,counter=0;charask;//定义字符数据while(1){printf("请输入一个整数:");scanf("%d",&m);getchar();if(m>=0&&m<=100) counter++;printf("继续输入下一个数据?(Y/N)");ask=getchar();//将键盘获得的数据赋值给askgetchar();if(ask!='y'&&ask!='Y') break;printf("\n");}printf("符合要求的整数个数为:%d\n",counter);}若输入数据为12、555、-15、16,每输入一个数据时输入Y/N判断是否输入下一个数据,则结果显示为:编写并调试程序,使用do-while循环控制语句实现上面的数据统计问题。调试数据仍参照上面给出的几种情况设计使用。使用一个负数作为数据输入结束标志程序:#include<stdio.h>intmain(){intm,counter=0;do{printf("请输入一个整数:");scanf("%d",&m);if(m<0) break;if(m<=100) counter++;printf("\n");}while(1);printf("符合要求的整数个数为:%d\n",counter);return0;}■程序调试◆实验过程原始记录:由于程序设计目的与调试数据和上述相同,则程序输出结果完全一致,如下:(1).输入的一组数据之间全部以空格分隔,只有最后一个数为负数,以回车键结束。如:16357–10输出结果为:由输出可知符合要求整数个数为3个。(与whlie语句的程序相同)(2).输入的一组数据之间全部以空格分隔,在负数之后又有正数数据,最后一个数不为负数,以回车键结束。如:16357-109617输出结果为:由输出可知符合要求整数个数为3个。(与whlie语句的程序相同)(3).输入的一组数据之间全部以空格分隔,输入数据中有多个负数,以回车键结束。如:16357–109617–877输出结果为:由输出可知符合要求整数个数为3个。(与whlie语句的程序相同)(4).输入的数据中有大于100的整数。如:16357–1096117–8726766输出结果为:由输出可知符合要求整数个数为3个。(与whlie语句的程序相同)(5).数据之间既用空格分隔,也用回车键分隔。如:76353762271796679617–8771966982-1631输出结果为:由输出可知符合要求整数个数为7个。(与whlie语句的程序相同)(6).每输入一个数据后均按回车键。若数据为:16357–1096117–8726766输出结果为:可知无论准备输入多少数据,但只要输入一个负数,程序就立刻停止,因此个数为3个。(与whlie语句的程序相同)(7).输入的第一个数据即为负数。若数据为:-7输出结果为:则当输入第一个数为负数时,可以知道输出符合要求个数为0。(与whlie语句的程序相同)(8).在输入的数据中使用数值很大的整数。如:17667789876517899-10987输出结果为:则输出符合要求个数为2个。(与whlie语句的程序相同)◆分析程序调试的输出结果:可以知道do......while语句虽然和while语句的程序书写顺序不同,但是在达到同一个目标时,输出的结果都是一致的。在输出时都是遇到负数均停止运行程序,并输出符合条件的数据的个数,遇到大于100的数据时,继续循环,但是符合条件的数据个数不变。编写并调试程序,使用for循环控制语句实现上面的数据统计问题。修改参考程序,使用完整格式的for循环控制语句实现上面的数据统计问题:#include<stdio.h>intmain(){ intm,counter; for(counter=0;1;counter++) { printf("请输入一个整数:"); scanf("%d",&m); if(m<0) break; if(m>100) counter--; printf("\n"); } printf("符合要求的整数个数为:%d\n",counter);return0;}◆分析程序调试的输出结果:按照上题数据运行,此程序运行输出的结果与上面的结果一致。由此可知,用for语句实现的循环结构,与while语句和do......while语句实现的循环结构有异曲同工之效,也可以看出,3种循环语句结构可以相互转化使用,做到了程序设计的多样性。▲此次调试程序遇到的问题:结果此程序一旦遇到大于100的数字,便会停止程序:第一次将参考程序修改成:结果此程序一旦遇到大于100的数字,便会停止程序:虽然没有上面的问题,但是此程序会将大于100的数也计入符合要求的数据中第二次将参考程序修改成:虽然没有上面的问题,但是此程序会将大于100的数也计入符合要求的数据中第三次将程序改为如上的程序,便可输出正确的答案。阶乘累加问题。编写程序,求1+2!+3!+…+n!的值。■编程分析(1).本实验内容是求解阶乘问题。(2).求n!用一个循环即可实现。(3).求1+2!+3!+…+n!的值,需要在求n!程序之外增加一个外重循环。其参考的程序为:#include<stdio.h>intmain(){longints=1,t;inti,j,n;printf("n=");scanf("%d",&n);for(i=2;i<=n;i++){for(t=1,j=1;j<=i;j++)t*=j;s+=t;}printf("s=%ld\n",s);return0;}■程序调试◆实验过程原始记录:(1).输入一个不大的正整数,分析程序执行结果。若输入3,则输出结果为:当输入的n=3时,此时i<=n成立,则执行内循环,此时j=1,小于i成立,则开始执行内循环,则t=1,j=2<=i成立,继续执行内循环,t=2,j=3<=i不成立,则得出s=s+t=1+2=3,i=i+1=2<=n成立,继续执行一次内循环,可以得出s=9,i4<=n不成立,则停止执行循环程序,输出的s=9。(2).输入一个零或者负数,分析程序执行结果。若输入0,则输出结果为:若输入-1,则输出结果为:当输入一个零或者负数时,由于i的初值等于2,则i<=n的条件不会成立,则不会执行循环,直接输出s,又s的初值为1,这输出的s=1。(3).输入一个很大的正整数,分析程序执行结果。若输入1000,则输出结果为:可以看出,当输入一个很大的数时,输出的结果是个负数。原因是数据溢出:由于程序中规定输出s的数据类型为%ld
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 洒水车租车合同协议书
- 电梯监理协议书
- 退还公款协议书
- 职员岗位协议书
- 烤烟专业化烘烤协议书
- 莱茵合作协议书
- 蓝城小镇协议书
- 税款划扣协议书
- 拱形棚造价合同协议书
- 租地改建协议书
- 新疆生产建设兵团2025届七年级数学第二学期期末监测模拟试题含解析
- 股权转让解除协议书
- 幼儿园桌椅安全教育
- 2025-2031年中国医学检验市场深度分析及行业前景展望报告
- 医院培训课件:《中华人民共和国母婴保健法》
- 佛山市普通高中2025年高三第二次诊断性检测生物试卷含解析
- 道路竣工测量重点基础知识点
- 人教版(2024)七年级下册生物期末复习知识点背诵提纲
- 严重过敏反应诊断和临床管理专家共识(2025)解读
- 物业标准化管理手册大全
- 遥感地质勘查服务企业数字化转型与智慧升级战略研究报告
评论
0/150
提交评论