1. 下面程序运行结果为(A )。请解释原因。
void main ( )
{
char c = ‘a’;
if (‘a’ < c <= ‘z’)
{
printf (“LOW”);
}
else
{
printf (“UP”);
}
}
A. LOW
B. UP
C. LOWUP
D. 程序语法错误
A。在if条件中‘a’<c <= ‘z’,优先比较’a’与c的大小,由于c=‘a’=97,所以‘a’<c 的结果为0,然后‘a’<c 的结果0与‘z’比较,而‘z’=122>0,满足if条件,最终输出LOW。
2. 请阅读以下程序,该程序(D)。请对选项进行解释。
void main( )
{
int a = 5, b = 0, c = 0;
if (a = b + c)
printf (“***\n”);
else
printf ("$KaTeX parse error: Undefined control sequence: \n at position 1: \̲n̲"); } A. 有语法错…$
D。在if(a=b+c)的判断中,若b+c的结果为0,则为假,不满足if条件,执行else;若为非0,则为真,执行if。因为b+c=0所以执行else,输出$$$。
3. 填空:以下程序运行结果是_____6________,请解释。
void main( )
{
int m = 5;
if (m++ > 5)
printf(“%d\n”, m);
else printf(“%d\n”, m–);
}
6。在if(m++>5)的判定中,先进行m与5的判断,m再++。而m=5,不满足if条件,所以执行else。
此时m经过++运算等于6,m–先输出6,再进行–运算。所以最终输出6,但最后m的值为5。
4. 已知 int x = 10, y = 20, z = 30; 以下语句执行后x =20, y=30__,z=30___。请解释。
if (x > y) z = x; x = y; y = z;
20,20,30.在该if语句中,并没有用{}为if提供执行范围,则与if在同一语句的z=x为if的执行内容。由于x=10<y=20,所以不满足if条件,不执行z=x,仅执行后面两条语句,所以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是否是闰年?
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int year;
int a = 0;
printf("输入年份:");
scanf("%d", &year);
if (year % 400==0) {
a = 1;
}
if (year % 4 == 0 && year % 100 != 0) {
a = 1;
}
switch (a)
{
case 1:printf("%d是闰年。", year); break;
default:printf("%d不是闰年。", year);
break;
}
return 0;
}
7. 程序实现:输入3个数 numA, numB, numC,计算这三个数的最大值,最小值。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
float numA,numB,numC,n,m;
scanf("%f %f %f", &numA, &numB, &numC);
m = (numA > numB) ? numA : numB;
m = (m > numC) ? m : numC;
n = (numA < numB) ? numA : numB;
n = (n < numC) ? n : numC;
printf("最大值为:%f",m);
printf("最小值为:%f",n);
return 0;
}
8. 程序实现:仿照课堂PPT,实现一个简单的计算器程序(只要求计算加减乘除)。要求:用户从键盘输入如下形式的表达式:操作数1 运算符op 操作数2, 比如:1 + 2, 1 / 2, 1 * 2 等,能够输出对应的结果,比如:1 + 2 = 3,1 / 2 = 0.500000, 1 * 2 = 2.
以上三道题的程序实现,请尽可能将核心步骤进行代码注释。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
float x, y, s, i;
char op;
printf("请按(操作数1运算符op操作数2)的表达式输入(运算符仅限加减乘除):\n");
i = scanf("%f%c%f", &x, &op, &y);
if (x > 0 && y > 0 || x > 0 && y < 0 || x < 0 && y>0 || x < 0 && y < 0)
{
switch (op)
{
case '+':
s = x + y;
printf("x+y=%f", s);
break;
case '-':
s = x - y;
printf("x-y=%f", s);
break;
case '*':
s = x * y;
printf("x*y=%f", s);
break;
case '/':
if (y == 0)
{
printf("数据输入类型错误,请重新输入:\n");
}
else
{
s = x / y;
printf("x/y=%f", s);
}
break;
defaul:
printf("输入数据类型错误,请重新输入:\n");
}
}
else
{
printf("输入数据类型错误,请重新输入:\n");
}
return 0;
}