C语言客观题求助!!!

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:30:28
(1)已知:int x; 则使用逗号运算的表达式"(x=4*5,x*5),x+25"的结果为____. A.20 B.100 C.表达式不合法 D.45

(2)已知:int x,y;double z;则以下语句中错误的函数调用是____.
A.scanf("%d,%lx,%le",&x,&y,&z); B.scanf("%2d*%d%lf",&x,&y,&z);
C.scanf("%x%*d%o",&x,&y); D.scanf("%x%o%6.2f",&x,&y,&z);

(3)执行以下语句后的输出结果为____
enum weekday {sun,mon=3,tue,wed,thu};
enum weekday workday;
workday=wed;
printf("%d\n",workday);
A.5 B.3 C.4 D.编译时出错

(4)若有定义:enum weekday{mon,tue,wed,thu,fri}workday;则错误的语句是_____.
A.workday={enum weekday}3; B.workday={enum weekday}(4-2);
C.workday=3; D.workday=thu;

(5)若有宏定义如下:
#define X 5
#define Y X+1
#define Z Y*X/2
则执行以下printf语句后,输出结果是____.
int a; a=Y;
printf("%d,",Z);
printf("%d\n",--a);
A.7,6 B.12,6 C.12,5 D.7,5

答案为:D D A C D
请写出分析过程!

(1)
逗号表达式的优先级是最低的,并且具有做左结合性。
逗号表达式的求值顺序是从左到右依次计算用逗号分隔的各表达式的值。最后的一个表达式的值就是整个表达式的值。

该式"(x=4*5,x*5),x+25"中返回x+25的值。
x=4*5 → x=20 . x*5 式对x的值没变化。所以此时的x=20.
则有"x=20,x+25" 其返回值为:20+25=45。
所以选: D

(2)
知道下面的知识点,在遇到这类问题就不怕了。
**********************************************
%d或%i 以十进制形式输出一个整形数据 |
----------------------------------------------
%x,%X 以十六进制形式输出一个无符号整形数据 | int型
----------------------------------------------
%o(字母o) 以八进制形式输出一个无符号整形数据 |
----------------------------------------------

----------------------------------------------
%c 输出一个字符数据 |
--------------------------------------------—char型
%s 输出一个字符窜 |
----------------------------------------------

----------------------------------------------
%f 以十进制小数形式输出一个浮点型数据 |
---------------------------------