




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北京联合大学 信息学院 “程序设计基础”课程调研(研究)报告题 目:逻辑运算和判断选取控制 姓名(学号): 专 业: 计算机科学与技术 编 制 时 间: 2012-5-2 。 版 本: 指 导 教 师: 北京联合大学-信息学院编制逻辑运算和判断选取控制实验(程序)设计报告2012年5月2日班号: 姓名: 学号: 第一章 实验情况概述本次实验主要是进行逻辑运算和判断选取控制,编写程序验证了if ( ) 、if ( ) else 、if ( ) else if ( ) else 语句,编写程序验证switch,利用if 验证各种关系运算符和逻辑运算符,编写程序验证if 的嵌套使用,解决求任意正整数
2、的位数、求4个数中的最大值等实际问题。并进行了相关程序的调试和分析,对实验经验进行总结和归纳。第二章 实验记录 1编写程序验证if ( ) 、if ( ) else 、 if ( ) else if ( ) else (1) 用if()语句处理选择结构设计相关源程序如下: #includeint main()float a,b,t; scanf(%f,%f,&a,&b); if(ab) t=a; a=b; b=t; 运行结果如图-1 printf(%5.2f,%5.2fn,a,b);return 0;(2)if() else语句源程序如下:#includeint main()int x,y;s
3、canf(%d,&x);if(x0)y=1;else y=-1; printf(x=%d,y=%dn,x,y); return 0; 运行结果如图-2 (3)if() else if() else语句#includeint main()int x,y;scanf(%d,&x);if(x0)y=1;elseif(x=0)y=0;elsey=-1;printf(x=%d,y=%dn,x,y); 运行结果如图-3 return 0;2 编写程序验证switch#includeint main()char need;scanf(%c,&need);printf(Your are:);switch(ne
4、ed) casea:printf(需要勤奋n);break; 运行结果如图-4 caseb:printf(需要坚持n);break; casec:printf(需要忍耐n);break; cased:printf(需要自信n);break; default:printf(Sorry!无法识别!n); return 0; 3 利用if 验证各种关系运算符和逻辑运算符(1)关系运算符:#includeint main()int a,b,x;scanf(%d,%d,&a,&b);if(ab)x=0; if(a=b) x=-1;printf(x=%dn,x); 运行结果如图-5return 0;(2)
5、逻辑运算符:#includeint main()int a,b,x;scanf(%d,%d,&a,&b);if(ab)x=1; if(a=b) x=-1;printf(x=%dn,x);return 0; 运行结果如图-6#includeint main()int a,b,x;scanf(%d,%d,&a,&b);if(ab&a=b)x=1; else x=-1;printf(x=%dn,x); 运行结果如图-7return 0; #includeint main()int a,b;scanf(%d,&a);if(!(a=0)b=1; else b=-1; 运行结果如图-8printf(b=%
6、dn,b);return 0; 4.编写程序验证if 的嵌套使用#includeint main()int v,t;scanf(%d,&v);if(v0)t=111111;elseif(v=0)t=0 ; 运行结果如图-9elset=-111111;printf(v=%d,t=%dn,v,t);return 0;5.求4个数中的最大值#includeint main() int max,a, b,x,y; scanf(%d,%d,%d,%d,&a,&b,&x,&y);if(ab&ax&ay)max=a;else if(bx&by)max=b;else if(xy)max=x;else 运行结果
7、如图-10max=y; printf( a=%dn b=%dn x=%dn y=%dn max=%dn,a,b,x,y,max); return 0;6.求任意正整数的位数#includeint main() int i=0,a=1,b; scanf(%d,&b); printf(b=%dn,b); while(ab)a=a*10;i=i+; printf(i=%dn,i); 运行结果如图-11return 0;调试步骤:先简单的画出流程图,然后进行编程。利用分步执行法及块式或行式注释法等方法进行调试,在上机实验的过程中不断修改并改进源程序,最终达到预期的运行结果。遇到的问题:在以上程序中,输
8、入一个位数超过10位的正整数时,会出现溢出现象,致使无法准确得到预期的结果。解决的方法:将数据类型定义为unsigned long int型,这样将变量的取值范围增大了。但应该注意到的是,即使这样,变量的取值范围还是有一定的限制的。若能够在每输入一个数字时都计数一次,则可以计数上十亿位的数,基本上达到了任意性输入!所以若能设计一个程序可以每从键盘读入一个数字,统计位数加1,则可以很好的解决上述问题。第三章 系统的评测 (1)求任意正整数的测评方案:输入在 int型范围内的数据,进行测试;同时还要测试范围外的数据,根据运行结果调整程序。 (2)测试用例: int类型的数据范围在021474836
9、47之间,我选取的测试数据为1234567,1234567810,12345678911,1234567899913.(2) 根据测试的结果进行分析和修改。 部分运行结果如下:由以上结果可知,当变量b的取值范围不在 int型之内时,b等于负值i等于0,所以该程序不能真正的测出任意正整数的位数。所以程序要考虑变量是取值范围外的数据时该怎么办,我的修改意见是将int型改为unsigned long int型,扩大变量的取值范围,同时,由于任何类型终究是有取值范围的,在最终的源程序中有必要将范围之外数据溢出的现象进行输出告诉使用者。但当每输入的一个数字,程序进行一次计数,即形参i自加一次,则即使用i
10、nt型也几乎可以达到任意性。所以要设计不同于以上程序的计数方式的另外一种源程序。第四章 程序清单修改后的程序清单:#includeint main() unsigned long int i=0,a=1,b; /对变量b的数据类型进行声明,同时对a 和i初始化。printf(please input any number that the number is 04294967297:n); /声明正整数的取值范围。 scanf(%ld,&b); printf( b=%ldn,b); while(ab) /让a与b进行比较a=a*10; /若小于b则执行while循环,直到a大于b。i=i+;
11、/a每执行一次循环增大10倍时,i也相应的增加1。 printf( i=%dn,i);return 0;但尽管如此,还是未能实现对10位数以上的正整数位数的统计处理,所以进一步修改程序如下: #include int main()char c; /定义实参为char型 int digit=0;printf(please input any number:n);while(c=getchar()!=n) /当c从键盘输入的字符中得到一个不是n的字符时 if(c=0&c=9) / 若c在09之间 digit+; /形参自加1 else printf( error!n); /若c是空格或字母等其他非
12、数字符号,则输出error. break; /输出error后终止该循环。 printf( digit=%dn,digit); /输出digit总数return 0; /函数返回值为0 由图示结果可知达到,位数达到了44位之多,比前2个程序更加强大!第五章 实验分析1因为是第一次做实验,同时对C的基本知识结构和定义掌握得不是非常熟练,实验进展比较艰难,经常要翻阅查看资料和书本,但基本达到了熟悉C开发环境、比较熟练掌握各种运算符的使用、克服对C的畏惧心理等预期目标。2实验中遇到了输入变量的数值大于相应的数据类型取值范围是数据溢出的问题及使用scanf输入数据的形式与要求不服的问题,出现第一个问题
13、的原因主要是因为在VC+6.0中每种数据类型都有相应的取值范围,超出后就会溢出;而第二个问题的主要原因是对C的基本知识不够熟悉,造成不能正确使用scanf函数。第一个解决的方法是将定义变量b的数据类型由最初的int型改为unsigned long int型,扩展取值范围,同时在使用者输入数据时,事先告知对方输入的数值范围;但最终还是通过改变读取数据的方式达到目的的,即当每输入的一个数字,程序进行一次计数,即形参i自加一次。而第二个问题的解决方法就是多温习课本,熟练掌握使用scanf函数时如何组织输入数据。解决问题的结果:第一个问题基本解决了求在20多亿位数以内的正整数的位数是多少,而第二个问题完全得以解决。3实验中的得失,和今后要注意的问题。本次实验主要的得是熟悉了C开发环境、比较熟练掌握了各种运算符的使用、克服了对C的畏惧心理,增加了对编程的认识和兴趣等;而失也是比较多的,首先是没有熟练掌握所学知识,造成编程时要经常为一些知识盲点查资料翻课本,浪费大量的精力和时间,其次是对求任意正整数的位数没有真正意义上的任意性,非常遗憾。今后必须提高注意的地方是要熟练的掌握所学知识体系,勤于温习,积极自学,做到得心应手。还有就是要学会在编程中静心,要有耐心。第六章 小结.1.熟练掌握了printf和scanf函数的使用。特别是使用scanf函数时,要加上变 量的地址符&;在输入数据时,要注意
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 13140:2025 EN Electronic fee collection - Evaluation of on-board and roadside equipment for conformity to ISO 13141
- 【白城】2025年吉林白城市洮北区面向下半年应征入伍高校毕业生招聘事业单位工作人员17人笔试历年典型考题及考点剖析附带答案详解
- 【乐山】2025年上半年四川峨眉山市赴四川师范大学招聘事业单位工作人员15人笔试历年典型考题及考点剖析附带答案详解
- 【湘潭】2025年湖南湘潭市岳塘区事业单位引进急需紧缺专业人才55人笔试历年典型考题及考点剖析附带答案详解
- 古迹作文教学课件
- 2025年绿色规划视角下低碳城市建设实践案例分析报告
- 2025年共享出行平台信用积分兑换机制与市场响应策略研究报告
- 跨境电商保税仓仓储资源整合与共享模式研究报告
- 绿色金融产品创新与2025年绿色金融科技应用报告
- 企业合同履约管理办法
- 企业人力资源管理创新与发展趋势分析
- 2022城市轨道交通列车驾驶员技能及素质要求第1部分:地铁、轻轨和单轨
- 《人工智能基础与应用(第2版)》全套教学课件
- 2025年宿迁市公需考试试题
- 建设工程项目的组织协调保障措施
- 2025年春季学期国家开放大学行政管理专业毕业论文选题指南
- CO2还原合成甲醇反应器研究进展
- DB3713T-291-2023工程建设项目“多测合一”技术规程
- 苏教版四年级下册数学计算题每日一练带答案(共20天)
- 江苏连云港某公司“12.9”爆炸事故报告
- 人教版三年级上下数学试卷合集-综合素质训练
评论
0/150
提交评论