1. 下面程序运行结果为( )。请解释原因。
void main ( )
{
char c = 'a';
if ('a' < c <= 'z')
{
printf ("LOW");
}
else
{
printf ("UP");
}
}
A. LOW
B. UP
C. LOWUP
D. 程序语法错误
解:'a<c'不成立,输出0,z=122>0,成立。所以输出LOW,选A
2.请阅读以下程序,该程序()。请对选项进行解释。
void main( )
{
int a = 5, b = 0, c = 0;
if (a = b + c)
printf ("***\n");
else
printf ("$$$\n");
}
A. 有语法错不能通过编译
B. 可以通过编译但不能通过连接
C. 输出***
D. 输出$$$
解:“+”优先级更高,先算b+c=0,a不等于0,所以为假,选D
3.填空:以下程序运行结果是____,请解释。
void main( ) { int m = 5; if (m++ > 5) printf("%d\n", m); else printf("%d\n", m--); } |
解:m++=6>5,结果为真,输出m=6
4.已知 int x = 10, y = 20, z = 30; 以下语句执行后x =___, y=___,z=___。请解释。
if (x > y) z = x; x = y; y = z; |
解:if后没有大括号,只执行相邻一项,x>y为假,z=x不执行
x=y,所以x=20
y=z。所以y=30
z=30。
5.下面的程序的功能是根据输入的百分制成绩score,转换成相应的五分制成绩grade并打印输出。转换的标准为:
当90≦score≦100时,grade为A;
当80≦score﹤90时,grade为B;
当70≦score﹤80时,grade为C;
当60≦score﹤70时,grade为D;
当score﹤60时,grade为E;
请填空:
#include <stdio.h>
void main ( ) {
int score, mark;
scanf ("%d",____(1)______);
mark = _____(2)_____;
switch (mark)
{
default: printf ("%d--E", score); ______(3)____;
case 10:
case___(4)___: printf ("%d--A", score); break;
case___(5)___: printf ("%d--B", score); break;
case___(6)___: printf ("%d--C", score); break;
case___(7)___: printf ("%d--D", score); break;
}
}
解
1)&score
2)score/10
3)break
4)9
5)8
6)7
7)6