第一题
int main()
{
int i = 10;
int j = 0;
if (j = 0)
i++;
else
i--;
return 0;
}
A:11
B:9
答案及解析 B
if语句中的条件判断为赋值语句的时候,因为赋值语句的返回值是右操作数;
第二题(注意细节)
#include <stdio.h>
void fun(int *s)
{
static int j = 0;
do
{
s[j] += s[j + 1];
} while (++j < 2);
}
int main()
{
int i, a[10] = {1, 2, 3, 4, 5};
for (i = 1; i < 3; i++)
fun(a);
for (i = 1; i < 5; i++)
printf("%d", a[i]);
printf("n");
return 0;
}
A:34756
B:5745
C:5795
D:35745
答案及解析 B
本题考查的是局部static变量和do-while循环的认识;
第一次进入函数:先初始化一下static变量j = 0;之后进入两次do-while循环;j = 2的时候循环结束,函数也结束;
第二次进入函数:不会执行初始化j,虽然j = 2;但是先执行do-while内部的语句,再判断;
输出结果为 5 7 4 5;
第三题
3. 下列代码的结果是
#include<stdio.h>
int main()
{
int a[5] = {1, 2, 3, 4, 5};
int *ptr = (int *)(&a + 1);
printf("%d,%d", *(a + 1), *(ptr - 1));
return 0;
}
A:3,5
B:2,4
C:2,5
D:3,4
答案及解析 B
在了解上面的知识之后:
对指针的加法,移动的字节数是根据这个指针指向的内容的数据类型算的,数据类型是什么,对指针加的数字就乘这个内容的数据类型的字节数;
&a指向的内容是整个数组,数组的数据类型是int [5]
所以&a+1,是移动的整个数组的大小,也就是1 * (5 * 4)字节,移动的也就是整个数组的大小;
第四题
int a = 14, b = 15, x;
char c = 'A';
x = (a && b) && (c < 'B');
A:true
B:false
C:0
D:1
答案及解析 D
因为a = 14,b = 15 ;上面就转换为(14 && 15)为真;
所以1 && (c < ‘B’)
所以都为1,为真,x = 1;
第五题
A:正确
B:错误
答案及解析 B
原文地址:https://blog.csdn.net/2302_76941579/article/details/134721595
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_20012.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!