实验五 分支结构程序设计
源程序: #include
char ch;
int i,num1=0,num2=0,num3=0;
for(i=1;i<=10;i++)
{ ch=getchar(); /*循环一次给变量ch赋值一次*/ if(ch==' ') num1=num1+1; /*统计空格个数*/ else if(ch=='\\n') num2=num2+1; /*统计回车个数*/
else num3=num3+1; /*统计其它字符个数*/ }
}
printf(\空格=%d,回车=%d,其它=%d\\n\
?举一反三
【5-2】输入n个字符统计其中数字字符、*号和字母的个数。 【例5-3】输入x,计算并输出下列分段函数y的值。
x3 (0 y= lnx (5≤x<10) |x| (x<0) 源程序: #include main() { float x,y; /*定义两个单精度的实型变量*/ printf(\ scanf(\ /*给单精度变量赋值,格式控制为:%f*/ 19 实验五 分支结构程序设计 } if(x>0&&x<5) /*不能表示为:0 printf(\ ?举一反三 【5-3】输入x,计算并输出下列分段函数y的值。 0 (x<0) y= 9x2 (0≤x<10) 4.5x-8.5x (x≥10) 【例5-4】任意输入year,判断是否是闰年,判断闰年的条件:能被4整除但不能被100整除,或者能被400整除。 源程序: #include int year; printf(\scanf(\ if(year%4==0&&year0!=0||year@0==0) printf(\); else printf(\ ?举一反三 【5-4】任意输入一个数,判断是否是偶数,是,输出“yes”;否则,输出“no”。 20 实验五 分支结构程序设计 【例5-5】任意输入一个人的成绩,输出相应的成绩等级。 100-90:等级A、89-80:等级B、79-70:等级C、69-60:等级D,其它等级E 源程序: #include int x; printf(\ scanf(\ switch(x/10) /*成绩除以10取整数*/ { case 10: case 9:printf(\语句:提前退出switch语句*/ case 8:printf(\case 7:printf(\case 6:printf(\default:printf(\} ?举一反三 【5-5】输入10个字符,分别统计空格、回车和其它字符出现的次数。 【例5-6】任意输入三角形的三条边判断能否构成三角形 (1)能,再判断能否构成等边三角形,能输出面积;否则,不输出任何信息。 提示:三角形面积公式: s?1a?b?c 和area?s(s?a)(s?b)(s?c) (2)不能构成三角形,输出“NO”。 源程序: #include 21 实验五 分支结构程序设计 main() { } int x,y,z; double s,area; printf(\ scanf(\ if(x+y>z&&x+z>y&&y+z>x) {if(x==y&&y==z&&x==z) {s=1.0/(x+y+z); } else printf(\ area=sqrt(s*(s-x)*(s-y)*(s-z)); printf(\面积=%f\\n\ } ?举一反三 【5-6】任意输入一个数,判断是否是2~100之间的数 (1)是,判断是否是3的倍数,是,输出此数;否则,不输出。 (2)不是,输出“输入错误”。 二、程序改错 不允许增加行也不允许删除行,也不得更改程序的结构。 1、计算下面分段函数的值 x+5 (x<0) f(x) = x2-x+3 (0≤x<10) 4x-7 (x≥10) 源程序: main() { int x,y; /********found********/ scanf(“%d”, x); 22 实验五 分支结构程序设计 if(x<0) y=x+5; /********found********/ else if(x<10) y=x^2-x+3; /********found********/ else y=4x-7; printf(“y=%d”,y) } 2、给变量b和c赋值,然后输出它们的值。 源程序: main() { int a=2,b,c; if(a>1) /********found********/ b=1;c=3; else b=2; printf(“%d,%d\\n”,b,c); } 【思考题】 1、 大写字母Z的后面紧挨着是小写字母a,对吗? 2、 getchar函数和putchar函数都不带参数吗? 3、 if后面的表达式可以任意类型吗? 4、 if(E),与E等价的形式是什么? 5、 switch语句中所有break语句都去掉,运行结果会改变吗? 6、switch后面表达式为实型变量表达式类型,运行时为什么会出错?分析之。 23