选择题56. 若有以下程序
#include<stdio.h>
main()
{ char c1,c2;
c1='C'+'8'-'3'; c2='9'-'0';
printf("%c %d\n",c1,c2);
}
则程序的输出结果是______。
- A.H 9
- B.表达式不合法输出无定值
- C.F'9'
- D.H'9'
A B C D
A
[解析] c1='C'+'8'-'3';实际上c1为'C'加上5,为'H',c2='9'-'0'; c2值为9,所以选择A。
58. 有以下程序
#include<stdio.h>
main()
{ int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是______。
- A.2,3,1
- B.2,3,2
- C.2,3,3
- D.2,2,1
A B C D
A
[解析] 对于表达式“z=x++,y++,++y;”,因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式改成“(z=x++),(y++),(++y)”。然后从左向右先计算表达式z=x++,因为x++先使用后自增,所以z的值为1,x的值为2。再计算逗号表达式第二个表达式y++,此时y的值为1,y++的值为2。最后计算第三个表达式++y,y的值为3。故本题答案为A。
62. 有以下程序
#include<stdio.h>
main()
{
int sum,pad,pad;
sum=pad=5;
pAd=++sum,pAd++,++pad;
printf("%d\n",pad);
}
程序的输出结果是______。
A B C D
A
[解析] C语言中标识符区分大小写,所以pAd和pad是不同的变量,pad值只自增一次,值为6,答案选择A。
66. 有以下程序
#include<stdio.h>
main()
{ int a=3;
printf("%d\n",(a+=a-=a*a));
}
程序运行后的输出结果是______。
A B C D
A
[解析] 先执行a-=a*a后a为-6,再执行a+=a,a为-12。