第一题
A:6.500000
B:6
C:5.500000
D:6.000000
答案及解析 D
本题考查的是不同数据类型之间的变量进行运算时发生的类型转换;
首先a被强制类型转换为int类型,会直接保留整数部分,a = 5;
b / b = 1.000000 因为b为double类型;
所以(int)a + b / b = 5 + 1.000000 ;
第二题(易错题)
2. s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S。则以下选项中正确的是()
答案及解析 D
strcmp函数,比较两个字符串的大小,通过两个字符串的第一个字符的ASCII值比较,若相等就继续往下比,左操作数的大,就是左字符串大,反之亦然;
if中的真假:0为假,非0为真
所以本题的B选项是最容易错的选项,如果s1 < s2 ,返回值为负数,但是在if语句中负数也为真值,所以会执行S,B选项错误;
第三题(易错题)
3. i = 1,j = 0 是正确的吗?
char c = 48;
int i = 1, j = 10;
j = !(c > j)&&i++;
A:正确
B:错误
答案及解析 A
相关博客:
首先,优先级:括号 > ++ > ! >&&
所以先算括号里的是必然的,j = !1 && i++;
那之后就是要根据优先级去算i++了吗?
当然不是,因为这时候我们的 !1和i++是&&的两个操作数;
先要遵守结合性;&&的结合性也就是运算顺序:从左到右
所以会先算!1 = 0;
j = 0 && i++;
而左边算完之后为0,又因为&&是有0就是0,岁月右边的i++不会计算;
最后i = 1, j = 0;
第四题
B:scanf(“%f%n”, &a, &b);
C:scanf(“%f%3o”, &a, &b);
D:scanf(“%f%f”, &a, &b);
答案及解析 C
第五题
#define SUM(x) 3*x*x+1
int main()
{
int i=5, j=8;
printf("%dn", SUM(i+j));
return 0;
}
A:64
B:508
C:420
D:其他几项都不对
答案及解析 A
所以SUM(i+j) 被替换为 3 * i + j * i + j + 1 = 3 * 5 + 8 * 5 + 8 + 1 = 64
原文地址:https://blog.csdn.net/2302_76941579/article/details/134673027
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_8767.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!