


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.实验四 循环结构程序设计一、实验目的1.掌握三种循环结构while、do-while、for的区别与联系,以及它们之间相互转换的方法,并能正确使用它们。2. 掌握与循环语句相关的break和continue语句的使用方法。二、实验内容1. 范例:输入正整数n,计算n的阶乘。分析 由于n!=1´2´3´×××´n,因此,要计算n的阶乘,可以从1开始,由1的阶乘乘以2得到2的阶乘,再乘以3得到3的阶乘××××××,以此类推。程序#include <iostrea
2、m>using namespace std;int main()int n,i;double result=0; /result是结果cout<<"请输入正整数:"<<endl;cin>>n;if(n<1)cout<<"输入错误!"<<endl;return 1;result=1;for(i=2;i<=n;i+) result*=i;cout<<result<<endl;return 0;2. 范例:输入若干字符,统计其中数字字符,白字符和其它字符的个数
3、,输入EOF结束。分析 要若要对字符进行统计,需用循环语句反复输入字符,读入字符后用switch语句判断字符的种类;要统计三种字符数,需定义三个用于计数的变量nDigit,nWhite,nOther并首先置0;读入字符用cin.get()函数,在这里,用while循环比较合适。白字符指空格键,tab键和回车键。EOF表示End of File,其值为-1,从键盘输入(Ctrl+Z)即可。这里采用重载的int cin.get()函数,它返回的是整型数,所以能返回EOF。程序#include <iostream>using namespace std;int main()char c;
4、int nWhite, nOther, nDigit;nWhite = nOther = nDigit = 0;c=cin.get();while(c!=EOF)switch (c)case '0': case '1': case '2' :case '3' :case '4':case '5': case '6': case '7' :case '8': case '9':nDigit+;break;case ' ':
5、 case 'n': case 't':nWhite+;break;default:nOther+;break;c=cin.get(); /读入下一字符cout<<"Digits="<<'t'<<nDigit<<'n'cout<<"White space="<<'t'<<nWhite<<'n'cout<<"Other Chars="&
6、lt;<'t'<<nOther<<'n'return 0; 思考 如果要分别统计数字09各数字出现的次数,怎样才能有效地实现?如果要统计输入的一段文字中出现的行数、单词数和字符数,又如何有效实现?3. 编写程序:约瑟夫(Josephus)问题:n 个人围坐成一圈,从 1 开始顺序编号;游戏开始,从第一个人开始由 1 到 m 循环报数,报到 m 的人退出圈外,问最后留下的那个人原来的序号。分析 本题首先要定义一个数组,其元素个数为n。n定义为常变量,以便定义数组。数组元素的值标识该人是否出局,1在圈内,0出局。值为0的元素不参加报数。
7、可用一个整型数k做计数器,采用倒计数,记录留下的人数。提示数组是线性排列的,而人是围成圈的,用数组表示要有一种从数组尾部跳到其头部的技巧,即下标加1除以n求余数。4. 范例:将输入的小写字母转换为大写字母。提示由ASCII码表可以看出,大写英文字母的ASCII码值在65至90之间,小写英文字母的ASCII码值在97至122 之间,每一个英文字母的大写和小写的ASCII码相差32(以上均为十进制)。 #include <iostream>using namespace std;int main() char str100; int i = 0; cout << "
8、;Please input a string .n" cin.getline(str,100); doif (stri<'a'|stri>'z') continue; /条件可有多种写法,也可不用continuestri-= 32; while ( str+i!='0'); cout << "nThe result string is : "<< str<<endl; return 0;思考但当用户输入一个空串,即用户开始输入时就以 Enter 键结束,string0
9、中就是表征输入串结束的0字符。由于是do_while循环,所以肯定要进入循环,在循环结束前由i+ 使i的值修改为1,使得循环体完成后的判断是对 string1 进行,从而跳过对string0 中的串结束符0判断, 导致在这种所谓“边界”的情况中,程序不能正确运行。怎样修改?给出两种有效方法。程序的质量指标和算法的质量指标一样,包括程序的正确性、可读性、稳健性以及高的执行效率和低的内存空间要求。正确性是指对于各种合法的输入,即使是苛刻的带有刁难性的输入数据也能够得到满足规格要求的结果,这其中就包括应当能处理各种边界情况。5. 编程:设计一个程序,输入某天是几月几日,要求算出这一天是本年的第几天。分析 要算出某天是当年的第几天,应该将当年中本月之前所有月的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JG/T 182-2008住宅轻钢装配式构件
- JG/T 154-2003电动伸缩围墙大门
- CJ/T 534-2018游泳池及水疗池用循环水泵
- CJ/T 318-2009太阳能热水系统用耐热聚乙烯管材
- CJ/T 216-2005给排水用软密封闸阀
- CJ/T 204-2000生活饮用水紫外线消毒器
- 软件评测师考试应试策略的建立与建议总结试题及答案
- 2025年软件评测师考试全真试题及答案
- 社会工作者与家庭动态的理解试题及答案
- 软件评测师考试考点深入剖析及总结试题及答案
- SH/T 3533-2024 石油化工给水排水管道工程施工及验收规范(正式版)
- 用友人力资源管理HR解决方案样本
- 北京市西城区三帆中学2023-2024学年七年级下学期期中数学试题(无答案)
- 药物残留溶剂分析报告书
- 肿瘤医院推广方案
- 动物出血性肺炎预防与治疗
- 公路工程安全风险辨识与防控手册
- 研究生开题报告评审表
- 统编版语文二年级下册《黄帝的传说》教学课件
- 海南大学本科毕业论文正文范文
- SCA涂胶机定量机维护作业指导书
评论
0/150
提交评论