四道C语言选择题求解题思路

1.若变量已正确定义并赋值,符合C语言语法的表达式是:()
A.a=a+7; B.a=7+b+c,a++ C.int(12.3%4) D.a=a+7=c+b
2.以下非法的赋值语句是:()
A.n=(i=2,++i); B.j++; C.++(i+1); D.x=j>0;
3.以下选项中不是C语句的是:()
A,{
int i;
i++;
printf("%d\n",i);
}
B.; C.a=5,c=10
D.{
;
}
4.以下合法的C语言赋值语句是:()
A.a=b=58 B.k=int(a+b); C.a=58,b=58 D.-i;
由于我有参考答案,同时也是为了不浪费大家太多的时间,我在此贴出四道题的答案,希望大家能跟小弟详细说说四道题的解题思路(也就是A选项为什么错,B选项为什么错这种),小弟的分虽然不多,但是真心求教!
答案:1.A 2.C 3.C 4.B

1.题
说B错是不对的, 几个语句可以同时用逗号分开的, 算是一个表达式.
C:%模取操作符左侧操作数应该是int类型的
D: 表达式 a=a+7=c+b错误在于, 它将一个值付给一个表达式付给一个值,而不是一个变量.
注意与 a=a=c+b 的区别, 赋值=号的左侧一定是一个变量,或是一个变量的引用
2题
A是合法的,同1题的B
B很简单了,自加一
C错误在于, ++操作符只能作用于变量, 而括号内(i+1)是一个值, 而不是变量.
D: 合法j>0的结果为bool值, 赋给x
3.题
C是表达式, 没有;不能称为一个语句.
4题:
AC没有分号结尾,所以不是语句.
D没有对任何一个变量赋值, 所以不是赋值语句.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-18
都挺简单的。只是手机不方便
第2个回答  2012-07-18
假设你打出来的选项没有打错的话。
第一题:
除A外,其他3个选项最后没有以分号 ; 结尾。
第二题:
A选项是逗号表达式,所以正确。
B选项是变量自加。
D选项,X=1
C选项错在 i+1之后的结果赋给哪个变量?
第三题:
A,B,D都是很基础的!不解释。
C选项错在没有以分号结尾。
第四题:
首先A,C没有以分号结尾
D 选项 -i; 是错误的。
第3个回答  2012-07-19
1.c语言中以“;”代表句子结尾,用通俗的语言来将,有";"才叫句子。只有A是句子,你猜选哪个?
补充一下就是如果每个算式后都有“;”的话AB都是对的,
C.运算符%的左操作数应该为整数。
D.7不是变量,不能对其赋值。

2.
A.()用法是使()中的运算在同级下优先进行,n=(i=2,++i)表示内容“i=2,++i”较"n="赋值语句优先进行。而","运算符的用法是从左到右依次进行运算。实际上整个过程是这样的:
i=2 -> ++i(i+=1 <==> i=i+1) -> n=i 注:"<==>"表示"等价于"

n的最终值为3 正确

B.j++ <==> j+=1 <==> j=j+1 正确

C.c语言中规定,++运算符只能用于变量(i+1)不是个变量,所以错了.
D."j>0"是逻辑运算,其结果根据算式的真值确定,c语言中规定式子为真真值为1式子为假真值为0。这里我们虽然不知道j等于多少,但是他是有个确定的值的,也就是说“j>0”是可以求出来的,至于x等于多少,由"j>0"的真值来决定,换句话说这个式子是把j>0的真值赋值给了x。补充一点:逻辑运算的优先级在赋值运算之前。 正确

3.c语言中以“;”代表句子结尾,用通俗的语言来将,有";"才叫句子。另外补充一点:c语言中规定{}在逻辑上表示一个句子,不用加“;”,如果你看懂了就知道为什么选c了,不解释。

4.AC的算式是合法的,不过都不是语句。D.运算符“-”需要两个量参与。注:“量”可以是常量或者变量。
相似回答