1. 下列for循环的循环体执行次数为()
for(int i = 10, j = 1; i = j = 0; ++i, --j)
A:0
B:1
C:无限
D:以上都不对
for循环的判断条件是 i = j = 0;赋值语句做判断条件,赋值表达式结果为右操作数的值,所以右操作数为0,整个结果就是0,0为假,非0为真,那执行次数就是0
2. 对于下面?char (*p)[16]?的声明描述正确的一项是()
A:p是长度为16的字符指针数组
B:p是包含16个字符的字符串
C:p是指向长度为16的字符数组的指针
D:p是长度为16的字符数组
首先*会先和p结合形成指针,指针的类型是char [16],是一个长度16的字符数组,所以这是一个指向长度为16的字符数组的指针。
3. 有以下程序,程序运行后的输出结果是()
void ss (char *s,char t)
{
while (*s)
{
if(*s == t)
*s = t - 'a' + 'A';
s++;
}
}
int main()
{
char str1[100] = "abcddfefdbd", c = 'd';
ss(str1, c);
printf ("%s\n", str1);
}
A:ABCDDEFEDBD
B:abcDDfefDbD
C:abcAAfefAbA
D:Abcddfefdbd
4. 有以下语句定义,则选项中表达式错误的是()
int x = 5;
const int *const p = &x;
int *const q = &x;
int const *next = &x;
const int *j = &x;
A:*p = 1;
B:q++;
C:next++;
D:( *j )++;
5. 有以下程序输出结果是?
#include <stdio.h>
int main()
{
int a[3][4] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23};
int(*p)[4] = a, i, j, k = 0;
for (i = 0; i < 3; i++)
for (j = 0; j < 2; j++)
k = k + *(*(p + i) + j);
printf("%d", k);
return 0;
}
A:40
B:60
C:80
D:100