上机实验四 分支结构程序设计.doc_第1页
上机实验四 分支结构程序设计.doc_第2页
上机实验四 分支结构程序设计.doc_第3页
上机实验四 分支结构程序设计.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上机实验四 分支结构程序设计学号:姓名:一目的要求1 掌握运用关系运算和逻辑运算表示各种条件;2 掌握字符型变量的定义方法和输入一个字符的方法;3 掌握if语句的3种格式和使用方法;掌握switch语句的语法规则、执行流程;4 掌握break语句在switch语句和循环语句中的作用。二实验内容【实验题1】. 程序填充:输入年份year, 判断并输出该年份是否是闰年(leap year)?如输入2000,则显示“2000 is a leap year!”,输入2100,则显示“2100 is not a leap year!”. 提示:判断年份year是闰年的条件是:(1) 能被400整除, 或者 (2) 能被4整除但不能被100整除.如何用逻辑或“|”和逻辑与“&”,结合求余运算“%”以及关系运算“=”和“!=”表示该条件?源程序:#include void main() int year;printf(Input year: ); scanf( %d , &year );if( year%400=0|(year%400!=0&yaer%4=0) )/* year是闰年*/printf(%d is a leap year! n,year); else /* year不是闰年*/printf(%d is not a leap year! n, year);编译、连接并运行该程序:如果输入2000,则显示Input year:2000 2000 is a leap year!;如果输入2008,则显示Input year:2008 2008 is a leap year!;如果输入2100,则显示Input year:2100 2100 is not a leap year!。【实验题2】程序填充:输入15个字符,统计英文字母、空格、数字和其它字符的个数。源程序如下:#includevoid main()int i,digit,blank ,letter,other; /*line 3 */char ch;/* 定义字符型变量ch*/digit=blank=letter=other=0;/*line 5 */printf(Enter 15 characters:);for( i=11; i=a&ch,= z|ch= A&ch= 0&ch= 9)/* ch是数字*/digit+;else if (ch= |ch= n)/* ch是空格*/enter+;else /* ch是其他字符*/other+;printf(digit=%d, letter=%d, blankr=%d, other=%dn, digit,letter,blank,other);编译、连接并运行程序,输入aB 5c&d *!221?, 则结果显示:Enter 15 characters:aB 5c&d *!221?digit=4,letter=4,blank=3,other=4如果删除标有/*line 5 */的语句行,并将标有/*line 3*/的语句行改写为“int i,digit=blank=letter=other=0;”,重新编译时是否正确?系统提示什么?应如何修改这一行才能保证程序的正确性?错误,digit letter,blank,other没有定义,int i,digit=0,blank=0,letter=0,other=0【实验题3】程序设计:输入一个三位数的整数n,判断n是否为Amstrong数。所谓Amstrong数,是指该数的个、十、百位上的数字的立方和恰好等于该数本身,如153,370,371和407都是Amstrong数。【分析】难点1:如何解析出一个三位数n的个位数g、十位数s、百位数b?三位数n除以10,余数正好是该整数的个位数,故可以用求余运算“%”求g,即g= n%10;三位数n除以100,商正好是n的百位数,故可以用整除运算“/”求b, 即b= n/100;三位数n除以10,商是n的百位与十位 ,再将该商除以10,余数正好是n的十位数s,即s= n/10%10;难点2:已知n的个、十、百位数g,s,b,如何判断n是否是Amstrong数?个、十、百位数的立方和恰好等于该数本身,数学表达式是g3+s3+b3=n, C语言表达式应写为g*g*g+s*s*s+b*b*b=n。请编写源程序:#include#includevoid main()int n,g,s,b;printf(input n:);scanf(%d,&n);g=n%10;b=n/100;s=n/10%10;if(pow(g,3)+pow(b,3)+pow(s,3)=n)printf(%d是一个Amstrong数n,n);else printf(%d 不是一个Amstrong数n,n);编译、连接并运行该程序,输入153,结果显示:Input n:153 153是一个Amstrong数;输入289,结果显示:Input n:289 289不是一个Amstrong数;输入407,结果显示:Input n:407 407是一个Amstrong数。【实验题4】阅读程序并回答问题:输入一个百分制成绩,要求输出成绩等级“”、“”、“”、“”、“”,其中100分为“”,分为“”,为“”,为“”,分以下为“”。源程序如下:#includevoid main() int score, s; char grade; /*line 4*/ printf(Input a score(0100): ); scanf(%d,&score); s= score/10; /*line 7*/ switch(s) /*line 8*/ case 10: grade=A; break;/*line 9*/ case 9 : grade=A; break; /*line 10*/ case 8 : grade=B; break; /*line 11*/ case 7 : grade=C; break; /*line 12*/ case 6 : grade=D; break; /*line 13*/ default: grade=E; break; /*line 14*/ putchar(grade);/*line 16*/编译、连接并运行该程序,测试结果如下:scoregrade45E65D77C89B92A100A问题1:在line 4中,为何将变量grade定义为char型? 字符变量问题2:在line 7中,运算符“/”是整除还是普通的除法?变量s与变量score是什么关系? 普通除法,S等于SCORE除以10之后取整数部分问题3:在line 8中,switch(s)能否改为“switch(score)”? 不能问题4:如果将line 9改写为“case 10: ”,程序是否依然能正确地将100分对应为A? 能问题5:如果删除line 14中的break语句,程序是否正确? 可以问题6:如果删除line 9line 14中所有的break语句,程序运行结果是否正常? 不正常,每个结果皆为E问题7:在line 16中的函数putchar(grade)的功能是什么?将该行改写为“printf( The grade is %c n”, grade); ”程序运行时显示结果有何不同? 输出最后的结果 没有不同问题8:如果用if语句实现该程序功能,程序应如何编写?#includevoid main()int score,s;printf(Input a score(0100):);scanf(%d,&score);s=score/10;if(s=10)printf(grade=An); else if(s=9)printf(grade=An);else if(s=8)printf(grade=Bn); else if(s=7)printf(grade=Cn); else if(s=6)printf(grade=Dn); elseprintf(grade=En);【实验题5】程序填充:在100999中找出一个最小的符合下列条件的整数:被3、5、7、9除得到的余数分别是1、3、5、7(09春省等级考试机考题)。源程序如下:#includevoid main() int i; for(i=100; i=999 ;i+) if(i%3=1|i%5=3|i%7=5|i%9=7 ) break; /*line 5:遇见符合条件的数,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论