TI:
1. 下面程序运行结果为( )。请解释原因。
void main ( ) { char c = 'a'; if ('a' < c <= 'z') { printf ("LOW"); } else { printf ("UP"); } } |
A. LOW
B. UP
C. LOWUP
D. 程序语法错误
答案:A
原因:在执行逻辑表达式时会遵循从左往右的结果,执行第一个比较'a'<c时,因为c为'a'所以输出结果为0(假),第二个比较就变成了0<='z'又因为'z'的整型是122,逻辑成立,所以执行语句printf("LOW"); 输出LOW。
T2:
请阅读以下程序,该程序()。请对选项进行解释。
void main( ) { int a = 5, b = 0, c = 0; if (a = b + c) printf ("***\n"); else printf ("$$$\n"); } |
A. 有语法错不能通过编译
B. 可以通过编译但不能通过连接
C. 输出***
D. 输出$$$
答案:D
原因:括号内使用“=”为运算符,不是判断a是否等于b+c,而是将b+c的值赋给了a且b+c的值为0,代表结果为假(0),因此执行else语句,输出"$$$\n"
T3:
填空:以下程序运行结果是_____________,请解释。
void main( ) { int m = 5; if (m++ > 5) printf("%d\n", m); else printf("%d\n", m--); } |
答案:6
原因 当做运算符来说,就是a = i++ 和 a = ++i这样的形式,情况就不一样了。a = i++的意思是,先把i的值赋给a,即a = i,再执行i = i + 1;a = ++i是先执行 i = i+1,再把i的值赋给a;
T4:
已知 int x = 10, y = 20, z = 30; 以下语句执行后x =________, y=______,z=_______。请解释。
if (x > y) z = x; x = y; y = z; |
答案:20 30 30
原因:因为x不大于y所以无法执行z=x的语句,且没有花括号于是从x=y开始就已经离开了if语句,并且开始执行,所以先执行x=y将y的20赋给x,此时x=20,,最后一句y=z是将z的值赋给y所以y=30所以结果为x=20 y=30 z=30。
T5:
下面的程序的功能是根据输入的百分制成绩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>
void main ( )
{
int year,a;
printf("请输入年份\n");
scanf("%d",&year);
a=year%4;//根据闰年是4的倍数这一特点,看年份/4是否有余数来判断是否为闰年
if(a!=0)
printf("不是闰年");
else
printf("是闰年");
return 0;
}
7. 程序实现:输入3个数 numA, numB, numC,计算这三个数的最大值,最小值。
#include <stdio.h>
void main ( )
{
float numA,numB,numC;
scanf("%f %f %f",&numA,&numB,&numC);
if(numA>numB)//先判断AB大小
{
if(numA>numC)//再判断AC
{
if(numB>numC)//最后判断BC并输出结果
printf("最大值为%f,最小值为%f。",numA,numC);
else
printf("最大值为%f,最小值为%f。",numA,numB);
}
else
printf("最大值为%f,最小值为%f。",numC,numB);
}
else//重复上述步骤
{
if(numB>numC)
{
if(numA>numC)
printf("最大值为%f,最小值为%f。",numB,numC);
else
printf("最大值为%f,最小值为%f。",numB,numA);
}
else
printf("最大值为%f,最小值为%f。",numC,numA);
}
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;
}
}