29-复习题
5.10 复习题
复习题的参考答案在附录A中。
1.假设所有变量的类型都是int,下列各项变量的值是多少:
a.x = (2 + 3) * 6;
b.x = (12 + 6)/2*3;
c.y = x = (2 + 3)/4;
d.y = 3 + 2*(x = 7/2);
2.假设所有变量的类型都是int,下列各项变量的值是多少:
a.x = (int)3.8 + 3.3;
b.x = (2 + 3) * 10.5;
c.x = 3 / 5 * 22.0;
d.x = 22.0 * 3 / 5;
3.对下列各表达式求值:
a.30.0 / 4.0 * 5.0;
b.30.0 / (4.0 * 5.0);
c.30 / 4 * 5;
d.30 * 5 / 4;
e.30 / 4.0 * 5;
f.30 / 4 * 5.0;
4.请找出下面的程序中的错误。
int main(void)
{
int i = 1,
float n;
printf("Watch out! Here come a bunch of fractions!\n");
while (i < 30)
n = 1/i;
printf(" %f", n);
printf("That's all, folks!\n");
return;
}
5.这是程序清单5.9的另一个版本。从表面上看,该程序只使用了一条 scanf() 语句,比程序清单5.9简单。请找出不如原版之处。
#include <stdio.h>
#define S_TO_M 60
int main(void)
{
int sec, min, left;
printf("This program converts seconds to minutes and ");
printf("seconds.\n");
printf("Just enter the number of seconds.\n");
printf("Enter 0 to end the program.\n");
while (sec > 0) {
scanf("%d", &sec);
min = sec/S_TO_M;
left = sec % S_TO_M;
printf("%d sec is %d min, %d sec. \n", sec, min, left);
printf("Next input?\n");
}
printf("Bye!\n");
return 0;
}
6.下面的程序将打印出什么内容?
#include <stdio.h>
#define FORMAT "%s! C is cool!\n"
int main(void)
{
int num = 10;
printf(FORMAT,FORMAT);
printf("%d\n", ++num);
printf("%d\n", num++);
printf("%d\n", num--);
printf("%d\n", num);
return 0;
}
7.下面的程序将打印出什么内容?
#include <stdio.h>
int main(void)
{
char c1, c2;
int diff;
float num;
c1 = 'S';
c2 = 'O';
diff = c1 - c2;
num = diff;
printf("%c%c%c:%d %3.2f\n", c1, c2, c1, diff, num);
return 0;
}
8.下面的程序将打印出什么内容?
#include <stdio.h>
#define TEN 10
int main(void)
{
int n = 0;
while (n++ < TEN)
printf("%5d", n);
printf("\n");
return 0;
}
9.修改上一个程序,使其可以打印字母a~g。
10.假设下面是完整程序中的一部分,它们分别打印什么?
a.
int x = 0;
while (++x < 3)
printf("%4d", x);
b.
int x = 100;
while (x++ < 103)
printf("%4d\n",x);
printf("%4d\n",x);
c.
char ch = 's';
while (ch < 'w')
{
printf("%c", ch);
ch++;
}
printf("%c\n",ch);
11.下面的程序会打印出什么?
#define MESG "COMPUTER BYTES DOG"
#include <stdio.h>
int main(void)
{
int n = 0;
while ( n < 5 )
printf("%s\n", MESG);
n++;
printf("That's all.\n");
return 0;
}
12.分别编写一条语句,完成下列各任务(或者说,使其具有以下副作用):
a.将变量x的值增加10
b.将变量x的值增加1
c.将a与b之和的两倍赋给c
d.将a与b的两倍之和赋给c
13.分别编写一条语句,完成下列各任务:
a.将变量x的值减少1
b.将n除以k的余数赋给m
c.q除以b减去a的差,并将结果赋给p
d.a与b之和除以c与d的乘积,并将结果赋给x