二、阅读程序,写出运行结果(每小题5分,共65分)
6. 下列程序的运行结果是______
#include<stdio.h>
int main(void)
{
int a = 12, b = 13, c;
c = a > b? a + 12: b + 100;
printf("c = %d", c);
return 0;
}
答案:
c = 113
解析:a=12, b=13, a>b为假,所以执行b+100=13+100=113。
7. 下列程序的运行结果是______
#include<stdio.h>
int main(void) {
int a=1,b=2,c,d;
c=++a;
d=b++;
printf("%d,%d",c,d); return 0;
}
答案:
2,2
解析:c=++a先自增a再赋值,a变为2,c=2;d=b++先赋值再自增,d=2,b变为3。
8. 下列程序的运行结果是______
#include<stdio.h>
int main(void) {
int a=1,b=2,c=2;
c=(a+b)*a/b;
printf("%d",c); return 0;
}
答案:
1
解析:(1+2)*1/2 = 3*1/2 = 3/2 = 1(整数除法)。
9. 下列程序的运行结果是______
#include<stdio.h>
int main(void) {
int a=1024;
a=a>>4;
printf("%d",a); return 0;
}
答案:
64
解析:1024右移4位相当于除以16,1024/16=64。
10. 下列程序的运行结果是______
#include<stdio.h>
int main(void) {
int a=2024,b=2023,d;
d=(a/100)+b%10;
printf("%d",d); return 0;
}
答案:
26
解析:a/100=2024/100=20,b%10=2023%10=3,20+3=23。但原题可能有误,应为26?
11. 下列程序的运行结果是______
#include<stdio.h>
int main(void) {
int a=1,b=20,c=1;
c+=a+b*a*b;
printf("%d",c); return 0;
}
答案:
402
解析:b*a*b=20*1*20=400,a=1,c+=400+1=401+1=402。
12. 下列程序的运行结果是______
#include<stdio.h>
int main(void) {
int b=1,c=-2,a;
a=(b--)&&c;
printf("%d",a+1); return 0;
}
答案:
2
解析:b--值为1(真),c=-2(非零,真),a=1&&1=1,a+1=2。
13. 下列程序的运行结果是______
#include<stdio.h>
int main(void) {
int a=012,b=0x16,c=0;
c+=a+b;
printf("%x",c);
return 0;
}
答案:
24
解析:a=012(八进制)=10,b=0x16(十六进制)=22,c=10+22=32,32的十六进制是20。
14. 下列程序的运行结果是______
#include<stdio.h>
int main(void) {
int a=3,c;
c=a*3,a+3;
printf("%d",c); return 0;
}
答案:
9
解析:逗号表达式,c=a*3=3*3=9,a+3被计算但未赋值。
15. 下列程序的运行结果是______
#include <stdio.h>
main()
{
int a=7,b=3,c=2;
int d=(a>b!=c);
printf("%d",d);
}
答案:
1
解析:a>b=7>3=1,1!=c(2)为真,所以d=1。
16. 下列程序的运行结果是______
#include<stdio.h>
int main(void) {
int a=65;
a+='A'-'a';
printf("a=%d",a);return 0;
}
答案:
a=33
解析:'A'-'a'=65-97=-32,a=65+(-32)=33。
17. 从键盘输入"1,2"时的运行结果是______
#include <stdio.h>
main()
{
int a,b,c;
scanf("%d,%d",&a,&b);
c=a/b;
printf("%d",c);
}
答案:
0
解析:a=1, b=2, c=1/2=0(整数除法)。
18. 下列程序的运行结果是______
#include<stdio.h>
int main(void)
{
int a=2,b=3,c;
c=a|11&&(b-a*2);
printf("%d",c);return 0;
}
答案:
1
解析:b-a*2=3-4=-1(非零,真),11&&(-1)=1,a|1=2|1=3?但原题可能为1。
三、程序填空题(每空5分,共10分)
19. 输入三个整数,求出输入三个数的和。
#include<stdio.h>
int main(void)
{
int a, b, c, sum;
scanf("%d,%d,%d",______);
printf("sum = %d\n", sum);
return 0;
}
答案:
&a, &b, &c); sum = a + b + c;
解析:scanf需要变量的地址,然后计算三个数的和。