}
int n=123456,i; i=n;
printf(\报数到%d的人是\switch(i) { }
printf(\
case 1: printf(\case 2:case 14: case 3:case 13: case 4:case 12: case 5:case 11: case 6:case 10: case 7:case 9: case 8:
printf(\printf(\printf(\printf(\printf(\printf(\printf(\
程序的运行结果: 报数到123456的人是D
(5)编写一个程序,求ax+bx+c=0方程的根。
【解】先计算d=b-4ac,再根据d是大于0、等于0还是小于0分别求根。程序如下: /*文件名:exci4_5.cpp*/ #include
int func(float a,float b,float c,float *x1,float *x2) { } main() {
float a,b,c,x1,x2,n; printf(\输入a,b,c:\float d; d=b*b-4*a*c; if (d>0) { }
else if (d==0) { }
else return 0;
*x1=(-b)/(2*a); return 1;
*x1=(-b+sqrt(d))/(2*a); *x2=(-b-sqrt(d))/(2*a); return 2;
VC++6.0 2
2
21
scanf(\ n=func(a,b,c,&x1,&x2); if (n==2) { printf(\两个根:\\n\ printf(\ printf(\
}
else if (n==1) { printf(\一个根:\\n\ printf(\ }
else printf(\没有根\\n\
}
22
4.3 上机实验4及参考答案
实验内容
假定向国外邮寄包裹的收费如下计算:首先,包裹重量四舍五入到最近的15g的倍数,然后按表4.1收费。编写一个程序根据用户输入的包裹重量和里程计算邮费。
表4.1 包裹邮费计算表 重量(g) 收费(元) 15 5 30 9 45 12 60
14(每足1000 km加1元) 75以上
15(每足1000 km加2元)
编程要求
在程序中使用switch语句进行判断计算。
解题思路和程序代码
对于用户输入的重量w,采用如下公式四舍五入到最近的15g的倍数: x=((w+7)/15)*15
当w小于8时,x=0,但邮费应为5;当x=60或x>=60时,还应考虑里程费用。因此采用一个switch语句进行判定计算。程序如下: /*文件名:prog4.cpp*/ #include
int p,w,f,x;
printf(\重量,里程:\ scanf(\ x=((w+7)/15)*15; switch (x) {
case 0: f=5; break; case 15: f=5;
23 VC++6.0 break; case 30: f=9; break; case 45: f=12; break;
case 60: f=14+(p/1000)*1; break;
default: f=15+(p/1000)*2; break; }
printf(\邮费:%d元\\n\}
程序运行结果: 重量,里程:80,2300↙ 邮费:19元
24
i=i0+1;
练习题5及参考答案
if (i==20) break; }
B. for (i=1;;i++) sum=sum+1; 1. 单项选择题
C. k=0; do (1)语句while (!e);中的条件!e等价于 。
{ A. e==0
B. e!=1
C. e!=0
++k;
D. ~e
} while (k<=0); 【答】!e等价于!(e!=0),即e==0。本题答案为A。
D. s=3379;
(2)下面有关for循环的正确描述是 。
while (s++%2+3%2) A. for循环只能用于循环次数已经确定的情况 s++; B. for循环是先执行循环体语句,后判定表达式 【答】A C. 在for循环中,不能用break语句跳出循环体
D. for循环体语句中,可以包含多条语句,但要用花括号(7)与以下程序段等价的是____。 括起来
while (a) 【答】D
{
(3)C语言中 。
if (b) continue; A. 不能使用do-while语句构成的循环
c; B. do-while语句构成的循环必须用break语句才能退出 }
C. do-while语句构成的循环,当while语句中的表达式值A. while (a)
为非零时结束循环
{ if (!b) c; }
D. do-while语句构成的循环,当while语句中的表达式值C. while (c)
为零时结束循环
{ if (b) c; }
【答】D
c; } (4)C语言中while和do-while循环的主要区别【答】A
是 。
(8)以下程序的输出结果是____。 A. do-while的循环体至少无条件执行一次
#include
main() C. do-while允许从外部转到循环体内 {
D. do-while的循环体不能是复合语句
int i;
【答】A
for (i=4;i<=10;i++) (5)以下程序段 。 {
int x=-1; if (i%3==0) continue; do printf(\{
} x=x*x; } }
A. 45
B. 457810 while (!x);
D. 678910
A. 是死循环
B. 循环执行二次
【答】B
C. 循环执行一次
D. 有语法错误
(9)以下程序的输出结果是____。 【答】C
#include
main() A. i=100;
{
while (1) int num=0; { while (num<=2) {
25
B. while (c)
D. while (a)
{ if (b) break;
C. 69
{ if (!b) break; c; }