资源描述:
《C语言程序设计(第3版)何钦铭-颜-晖-第3章--分支结构.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章分支结构【练习3-1】例3-4中使用else-if语句求解多分段函数,为了检查else-if语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。解答:最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。可再给出x=0和x=15时的两种情况。【练习3-2】计算符号函数的值:输入一个整数x,计算并输出下列分段函数sign(x)的值。-1x<0y=sign(x)=0x=01x>0解答:#includeintmain(void){intx,y;printf("Enterx:
2、");scanf("%d",&x);if(x>0)y=1;elseif(x==0)y=0;elsey=-1;printf("sign(%d)=%d",x,y);return0;}【练习3-3】统计学生平均成绩与及格人数:输入一个正整数n,再输入n个学生的成绩,计算平均成绩,并统计所有及格学生的人数。试编写相应程序。解答:#includeintmain(void){intcount,i,n;doublegrade,total;printf("Entern:");scanf("%d",&n);total=0;count=0;for(i=1;i<=n;i++
3、){printf("Entergrade#%d:",i);scanf("%lf",&grade);total=total+grade;if(grade>=60)count++;}printf("Gradeaverage=%.2f",total/n);printf("Numberofpass=%d",count);return0;}【练习3-4】统计字符:输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。试编写相应程序。解答:#includeintmain(void){inti;intblank,digit,letter,oth
4、er;charc;blank=digit=letter=other=0;for(i=1;i<=15;i++){c=getchar();if(c>='a'&&c<='z'
5、
6、c>='A'&&c<='Z')letter++;elseif(c>='0'&&c<='9')digit++;elseif(c==''
7、
8、c=='')blank++;elseother++;}printf("letter=%d,blank=%d,digit=%d,other=%d",letter,blank,digit,other);return0;}【练习3-5】输出闰年:输出21世纪中截至某个年
9、份之前的所有闰年年份。判断闰年的条件是:能被4整除但不能被100整除,或者能被400整除。试编写相应程序。解答:#includeintmain(void){intyear;printf("Enteryear:");scanf("%d",&year);for(;year>=2000;year--){if((year%4==0&&year%100!=0)
10、
11、year%400==0)printf("Itisaleapyear");elseprintf("Itisnotaleapyear");}return0;}【练习3-6】在例3-8程序中,如果把swi
12、tch语句中所有的break都去掉,运行结果会改变吗?如果有变化,输出什么?为什么?解答:如果去掉所有的break语句,运行结果会改变,输出price=0.0,因为不管choice值与其中某个常量表达式相等,当去掉break语句时,其后的所有语句段都将运行,故每次都将执行到price=0.0语句为止。【练习3-7】成绩转换:输入一个百分制成绩,将其转换为五分制成绩。百分制成绩到五分制成绩的转换规则:大于或等于90分为A,小于90分且大于或等于80分为B,小于80分且大于或等于70分为C,小于70分且大于或等于60分为D,小于60分为E。试编写相应程序。解答:#include
13、intmain(void){doublegrade;printf("Inputgrade:");scanf(“%lf”,&grade);If(grade>=90)printf("A");elseif(grade>=80)printf("B");elseif(grade>=70)printf("C");elseif(grade>=60)printf("D");elseprintf("E");return0;}或#includeintmain(void){doublescore;ch