C语言的题目

1)以下程序的输出是( )。
int a=100,x=10,y=20 ,ok1=5,ok2=0;
if(x<y)
if(y!=10)
if(!ok1)
a=1;
else
if(ok2) a=10;
a=-1;
printf("%d\n",a);
A)1 B)0 C)-1 D)值不确定

2)以下程序的输出是( )。
int x=1;
if(x=2)
printf("OK");
else if(x<2)printf("%d\n",x);
else printf("Quit");
A)OK B)Quit C)1 D)无输出结果

3)若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价与表达式(exp)的是( ).
A)(exp==0) B)(exp!=0) C)(exp==1) D(exp!=1)

4)以下程序的运行结果是( ).
int k=4,a=3,b=2,c=1;
printf("\n%d\n",k<a?k:c<b?c:a);
A)4 B)3 C)2 D)1

请给出答案和思考过程,感激不尽!!!

1 C 2 C 3 B 4 D

1
这是一个if else 语句,首先你要明白,if的内嵌语句 是第一个分号之前的,因为在C语言中分号是一个分号 就是一个语句.第一个if 的内嵌语句是(y!=10)if(!ok1)a=1;因为X<Y成立,所以与这个if配对的else不必再做,接着做这个if的内嵌语句,Y不等于10成立,接着做!ok1,因为ok1值为5所以!ok1为假,跳出做a=1.做完以后接着输出a=1既可选C

2
第一句定x=1
做if语句,x=2?不成立,所以不做if的内嵌语句printf("ok");而是做与if相应的else语句if(x<2)printf("%
d\n",x);else printf("Quit");x<2成立,所以做这个if 语句,输出x,x的值为1,选C

3
条件运算符的做法是括号内为真执行逗号前的,为假执行逗号后的.所以exp?意思是如果exp不等于0(为真)执行表达式1,否则执行表达式2

4
首先要知道条件运算符是自右至左的结合方式,所以可以理解为k<a?k:(c<b?c:a),从右往左算,先算括号内的,结果为C.再算k<a?k:c得出结果为C

好好算下,不要心急,我是大一刚学过C语言,这些题都做过的.南大题库里就有.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-07-25
1、C

int a=100,x=10,y=20 ,ok1=5,ok2=0;
if(x<y)
if(y!=10)
if(!ok1)
a=1;
else
if(ok2) a=10;
a=-1;
printf("%d\n",a);
其实在if语句中判断的就是括号内的值是不是为真,是真则执行他的下一个语句,假的话就跳过属于他的语句,去执行他下一个的独立语句。
这道题的思路就是:
先判断X是否小于Y,是的话执行第二个IF,这里判断是成立的,也就是可以执行下一个语句的,在第二个IF里判断Y是否等于10,不等于的话执行第三个IF,判断OK1的值是否为真,是的话执行IF下面的A=1。在这里IF里面的条件不符合,所以执行ELSE,在ELSE里面判断OK2的值是否为真,是的话执行A=10,继续执行,A=-1,是把-1的值付给A

2、C
int x=1;
if(x=2)
printf("OK");
else if(x<2)printf("%d\n",x);
else printf("Quit");

开始定义的就是x=1;第一个if语句判断为假,所以就执行else if(x<2)此句是成立的所以就执行他的下条语句也就是printf("%d\n",x); ,此时x的值因为在以前的语句中并没有改变他的值,所以还是当初所付的初值,这里所输出的结果也就是初值
3、c
判断EXP的值是否为真,真的话结果是A ,假的话结果是B--,在这道题中只有EXP==1的值为真。
4、D
k<a?k:c<b?c:a可以化一下(k<a?k:c)<b?c:a这样就容易看了,先看括号里面的,判断K是否小于A,是的话结果为K,否的话结果为C,这里的结果为C,然后式子就成了c<b?c:a,这样在判断C是否小于B,是的话结果是C,否的话结果是A。这里打印出来的是C的值。不知道这样讲楼主是否明白?本回答被提问者采纳
第2个回答  2007-07-26
1、C 2、C 3、C 4、D

1、先判断X是否小于Y,是的话执行第二个IF,在第二个IF里判断Y是否等于10,不等于的话执行第三个IF,判断OK1的值是否为真,是的话执行IF下面的A=1。在这里IF里面的条件不符合,所以执行ELSE,在ELSE里面判断OK2的值是否为真,是的话执行A=10,继续执行,A=-1,是把-1的值付给A。
2、首先IF判断X是否等于2,等于的话打印“OK”,在这里不等与就不执行打印,执行ELSE,在第一个ELSE里面判断X是否小于2,是的话打印X的值。
3、判断EXP的值是否为真,真的话结果是A ,假的话结果是B--,在这道题中只有EXP==1的值为真。
4、k<a?k:c<b?c:a可以化一下(k<a?k:c)<b?c:a这样就容易看了,先看括号里面的,判断K是否小于A,是的话结果为K,否的话结果为C,这里的结果为C,然后式子就成了c<b?c:a,这样在判断C是否小于B,是的话结果是C,否的话结果是A。这里打印出来的是C的值。不知道这样讲楼主是否明白?
第3个回答  2007-07-26
1.C 只看最后赋植 a=-1;前面执行
if(x<y)
if(y!=10)
else
if(ok2) a=10; 后面的语句不用看
2.A if(x=2) 中x=2为赋植语句 输出OK
3.C判断EXP的值是否为真,真的话结果是A ,假的话结果是B--,在这道题中只有EXP==1的值为真。
4.D 3目运算要从右往左算。
第4个回答  2007-07-25
第2题if(x=2) 是不是原题如果是if(x==2)那么选择C,如果是前者选择A
相似回答