6道C语言基础题,麻烦各位朋友帮帮忙,仅有的30分送上

一:
# include"stdio.h"
main()
{
int x=2,y=-1,z=2;
if(x<y)
if(y<0) z=0;
else z+=1;
printf("%d\n",z);
}
这个程序最后结果z=2,为什么不是等于3呢?是不是因为是对应第二个
二:
合法的一组C语言数值常量是()
A: 12. 0xa23 4.5e0
B: 177 4e1.5 0abc
为什么选A呢?
三:
执行如下语句的结果为()
printf("%s,%5.3s\n","COMPUTER","COMPUTER");
答案是 COMPUTER, (空格)COM
后面的空格是哪里来的呢?为什么第二个只有COM?
四:
设x,y均为float型变量,则以下不合法的赋值语句是 y=(x%2)/10;
为什么呢?
五:
以下程序的运行结果是
# include <stdio.h>
Main()
{
Int c,x,y;
x=1;
y=1;
c=0;
c=x++| |y++;
printf("\n%d%d%d\n",x,y,c);
结果是211 为什么呢?,x++ 和 y++ 不是使得 x 和y都等于2了吗?这样的话c 不应该等于0吗?
六:
Int k=0;
while(k++<=2)
printf("%d",k);
结果是 123 为什么会有一个3呢?不应该是12吗?

楼主你好,以下是我给你的解析,不懂可以追问

1、z=2,//因为第一个if语句的条件是x<y,这个条件不成立,所以第二个if语句没有执行,对于的else是对应第二个if语句的。所以z没有变化
2、A,12. 0xa23 4.5e0,这四个都是数值常量,12为整形数,0xa23为十六进制数,4.5e0double类型的数。而B中0abc就不是一个常量
3、%m.ns 输出占m个字符,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格,所以结果为:COMPUTER, (空格)COM
4、y=(x%2)/10;,x跟y都是浮点型的数,而(x%2)/10得到的是个正新的,如果是这样就对了,(x%2。0)/10.0
5、c=x++| |y++;相当于c=(x++)||(y++),c的值是这个条件表达式的值,x++和y++只要任何一个为真,c就等于1,两个都为假,c的值0,所以先看x++ 这个应该是x==2,为真,所以y++就不会执行,这个条件表达式为真,所以c==1,所以答案是2 1 1
6、k++是先用后加,先用k原来的值和2比较,再做自增,如果是++k的话,就不会有3了。所以结果是123
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-15
1. if(y<0) z=0;else z+=1; 这是一个整体,接在if(x<y)之后,但是x<y不成立,所以都没有进去,Z保持不变
2.B 4e1.5 0abc 这两个都表达错误 e后面 不能跟浮点数,0abc完全不是个数值,区别于A中的0xa23, 0x 开头是16进制的数值表示方式
3.%5.3s 这个格式表示这个输出的字符串占5个位置,但是只显示其中3个,其余补空格
4.浮点数不能做取余操作
5.c等于1 跟x和y的值没有关系,除非xy都是0, c的值是后面那个等式或运算下来的结果。
或运算发现x不为0时,就省去了y的运算,因为这个等式永远为1,没必要往下继续算了
6.k++<=2 这个等式在 判断成立后 k才加1 K= 0,成立 则K+1,打印
K=1,K=2 都是一样的
第2个回答  2013-01-15
1中的问题就是你说的,除非用大括号括起来,要不然else总与离他最近的未匹配的if匹配;
2中4e1.5我觉得不对,你有听过10的1.5次方吗?我觉得e后面不能跟小数;
3中%m.ns 输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格;
4中C语言里面,取余符号的数据只能是整形的(int short long char这几种),所以x%2是不合法的;
5中||有这样的特性,只要||左边的是真,那么就不会计算||右边的值,就相当与c=x++,而x++又是先使用后自加,也就相当与c=x;x=x+1;所以,最后x=2,y=1,c=1;
6中与5中关于x++的说法一样,先使用,后自加,也就是先判断0<=2,后0自加,k为1,再执行printf语句,输出1;再判断1<=2,后1自加,k=2,再执行printf语句,输出2;再判断2<=2,后2自加,k=3,再执行printf语句,输出3
第3个回答  2013-01-15
1:
分析:
首先if(x<y) 不成立
那也就是说 if(y<0) z=0; 和else z+=1;都不会执行,所以z的值是不变的。

本来是想帮你解答的,看到printf的时候 就不想在看了,你可能是学生,就不能自己去网上查查,或是去看看书吗,非要上这上面提个问题嘛,你连基本的printf的函数用法都不知道,还搞什么C语言编程啊,不要提这种问题来浪费大家的时间了,真是懒得回答了 这也叫问题???????真是不想说呀。