1. 下面程序运行结果为( )。请解释原因。
void main ( ) { char c = 'a'; if ('a' < c <= 'z') { printf ("LOW"); } else { printf ("UP"); } } |
A. LOW
B. UP
C. LOWUP
D. 程序语法错误
答:A.LOW;在if语句中先判断'a'<c,而c被赋值为a,故'a'<c不成立,输出为0 然后进行0<='z'的判断,'z'的ASCII值为122,0<122成立,输出值为1, 执行结果为LOW
- 请阅读以下程序,该程序()。请对选项进行解释。
void main( ) { int a = 5, b = 0, c = 0; if (a = b + c) printf ("***\n"); else printf ("$$$\n"); } |
A. 有语法错不能通过编译
B. 可以通过编译但不能通过连接
C. 输出***
D. 输出$$$
答:D.输出$$$\n; if判断语句的条件为a=b+c,算数运算符的优先级>赋值运算符,先进行b+c的运算输出为0,再把0赋给a,得到if(0),所以跳过if的后续语句运行else后的语句输出$$$\n。
- 填空:以下程序运行结果是______6_______,请解释。
void main( ) { int m = 5; if (m++ > 5) printf("%d\n", m); else printf("%d\n", m--); } |
答:在if语句的条件m++>5中,m++的值为5,该语句后m的值加1为6,因此m++>5判断不成立执行else后的语句,同理m--的值为6,故结果为6。
- 已知 int x = 10, y = 20, z = 30; 以下语句执行后x =____20____, y=___30___,z=___30____。请解释。
if (x > y) z = x; x = y; y = z; |
答:if语句中条件x>y即10>20不成立,因为没有大括号仅跳过第一个语句,从x=y开始执行将y赋值给x,此时x=20,再把z赋值给y,此时y=30。 因此答案为x = 20,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; |
请填空:(1)____&score_____(2)_____score/10_____(3)____break______
(4)_____9_____(5)_____8_____(6)_____7_____ (7)____6______
#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; } } |
6. 程序实现:输入1个年份 year,判断year是否是闰年?
#include <stdio.h>
int main ( )
{
int year,a;
printf("请输入年份\n");
scanf("%d",&year);
a=year%4;
if(a!=0)
printf("不是闰年");
else
printf("是闰年");
return 0;
}
7. 程序实现:输入3个数 numA, numB, numC,计算这三个数的最大值,最小值。
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int numA,numB,numC;
int min;
int max;
scanf("%d %d %d",&numA,&numB,&numC);
if(numA>numB&&numA>numC){
max=numA;
if(numB>numC){
min=numC;
}else min=numB;
}
else if(numB>numA&&numB>numC){
max=numB;
if(numA>numC){
min=numC;
}else min=numA;
}
else if(numC>numA&&numC>numB){
max=numC;if(numA>numB){
min=numB;}else min=numA;
}
printf("最大值为%d",max);
printf("最小值为%d",min);
return 0;
}
8. 程序实现:仿照课堂PPT,实现一个简单的计算器程序(只要求计算加减乘除)。要求:用户从键盘输入如下形式的表达式:操作数1 运算符op 操作数2, 比如:1 + 2, 1 / 2, 1 * 2 等,能够输出对应的结果,比如:1 + 2 = 3,1 / 2 = 0.500000, 1 * 2 = 2.
#include <stdio.h>
void main ( )
{
float num1,num2,num3;
char op;
printf("请输入计算式");
scanf("%f %c %f",&num1,&op,&num2);
switch(op)
{
case'+':printf("%f+%f=%f",num1,num2,num1+num2);
break;
case'-':printf("%f-%f=%f",num1,num2,num1-num2);
break;
case'*':printf("%f*%f=%f",num1,num2,num1*num2);
break;
case'/':
if(num2==0)
printf("算式不成立\n");
else
printf("%f/%f=%f",num1,num2,num1/num2);
break;
}
}