1.若有语句:char *line[5];,以下叙述中正确的是
A) 定义line是一个数组,每个数组元素是一个基类型为char为指针变量
B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C) 定义line是一个指针数组,语句中的*号称为间址运算符
D) 定义line是一个指向字符型函数的指针
Ans: A .
2.
有以下程序段
char ch; int k;
ch=′a′;
k=12;
printf("%c,%d,",ch,ch,k);printf("k=%d \n",k);
已知字符a的ASCII码值为97,则执行上述程序段后输出结果是
A)因变量类型与格式描述符的类型不匹配输出无定值
B)输出项与格式描述符个数不符,输出为零值或不定值
C)a,97,12k=12
D)a,97,k=12
Ans: D.
3.
以下错误的定义语句是
A)intx[][3]={{0},{1},{1,2,3}}; B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[][3]={1,2,3,4};
Ans:C. C语言中,在定义并初始化二维数组时,可以省略数组第一维的长度,但是不能省略第二维的长度。故选项C)错误
4.
下面的程序段运行后,输出结果是
int i,j,x=0;
static inta[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
for(i=0;i<8;i++)
x+=a[i][j];
printf("%d",x);
A)9 B)不确定值 C)0 D)18
Ans: C j最后的值为3,判断不通过检查后再继续后续的代码。
5.
下列程序执行后的输出结果是
void func(int*a,int b[])
{ b[0]=*a+6; }
main()
{ int a,b[5];
a=0; b[0]=3;
func(&a,b);printf("%d\n",b[0]);}
A)6 B)7 C)8 D)9
Ans:A.
void func(int *a,int b[])里定义了int* a ,传入地址,b[]没有初始化也表示地址b, 传入两个地址后,可以对地址里面存的东西修改,并传出去,但是不能更改地址,因为函数在传入实参的时候,是把参数复制了一份。除非是&按值取用,则不把参数复制,直接使用原地址的值,对该地址的操作也会保留下来。
l