C语言程序设计(第3版)何钦铭 颜 晖 第3章 分支结构

第3章 分支结构

【练习 3-1】例 3-4 中使用 else-if 语句求解多分段函数,为了检查 else-if 语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。 解答:

最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。可再给出 x=0和 x=15 时的两种情况。

【练习 3-2】计算符号函数的值: 输入一个整数 x,计算并输出下列分段函数 sign(x)的值。

-1 x<0 y=sign(x)= 0 x=0 1 x>0 解答:

#include int main(void) {

int x, y;

printf(\

scanf(\if(x>0) y=1; else if (x==0) y=0; else y=-1;

printf(\

return 0;

}

【练习 3-3】统计学生平均成绩与及格人数:输入一个正整数 n,再输入 n 个学生的成绩,计算平均成绩,并统计所有及格学生的人数。试编写相应程序。 解答:

# include int main(void) {

int count, i, n;

double grade, total;

printf(\ scanf(\ total = 0; count = 0;

for(i = 1; i <= n; i++){

printf(\ scanf (\

total = total + grade; if(grade >= 60) count++; }

printf(\ printf(\

return 0; }

【练习 3-4】统计字符:输入 10 个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。试编写相应程序。 解答:

#include int main(void) {

int i;

int blank, digit, letter, other; char c;

blank = digit = letter = other = 0; for(i=1;i<=15;i++){

c = getchar();

if(c>='a' && c <= 'z' || c>='A' && c <= 'Z')

letter++;

else if(c>='0' && c <= '9')

digit++;

else if(c==' '||c=='\\n')

blank++; else

other++;}

printf(\

k, digit, other);

return 0;

}

【练习3-5】输出闰年:输出21世纪中截至某个年份之前的所有闰年年份。判断闰年的条件是:能被4整除但不能被100整除,或者能被400整除。试编写相应程序。 解答:

# include int main(void) {

int year;

printf(\ scanf(\

for(;year>=2000;year--){

if( (year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0)

printf(\ else

printf(\

return 0; }

【练习 3-6】在例 3-8 程序中,如果把switch语句中所有的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 int main(void) {

double grade;

printf(\

scanf(“%lf”,&grade);

If(grade>=90) printf(\ else if(grade>=80) printf(\

else if(grade>=70) printf(\else if(grade>=60) printf(\else printf(\

return 0;

} 或

#include int main(void) {

double score; char grade;

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4