24、若已定义“int a[]={1,2,3,4},*p=a;”,则下面表达式中值不等于 2 的是( )。
A.*(++a) B.*(p+1) C.*(a+1) D.*(++p)
25、设有如下函数定义:
int fun(char *s)
{
char *p=s;
while(*p!='\0') p++;
return(p-s);
}
如果在主程序中用“printf("%d",fun("goodbye"));”调用函数,则输出结果为( )。
A.3 B.6 C.8 D.7
26、设有以下语句:
struct st{ int num; struct st *next;};
struct st s1={5,NULL},s2={7,NULL},s3={9,NULL},*p; //NULL 代表空指针
s1.next=&s2; s2.next=&s3;
p=&s1; p=p->next;
则以下表达式的值为 8 的是( )。
A.p++->num B.p->num++ C.++p->num D.(*p).num++
27、以下对结构体变量 stu1 中成员 age 非法引用的是( )。
struct student { int age;int num;} stu1,*p; p=&stu1;
A.stu1.age B.student.age C.p->age D.(*p).age
28、当说明一个共用体变量时系统分配给它的内存是( )。
A.各成员所需内存量的总和 B.第一个成员所需内存量
C.成员中占内存量最大者所需内存量 D.最后一个成员所需内存量
29、如果要将存放在双精度型数组 x[10]中的 10 个数写到文件指针所指向的文件中,
正确的语句是( )。
A.for(i=0;i<50;i++) fputc(x[i],fp); B.for(i=0;i<10;i++) fputc(&x[i],fp);
C.for(i=0;i<10;i++) fputc(&x[i],8,1,fp); D.fwrite(x,8,10,fp);
30、执行下面程序段后,b 的值是( )。
int x=3.5,b; char z='A'; b=((x&15) && (z<'a'));
A.0 B.1 C.2 D.3
15、若有说明:int a[][3]={1,2,3,4,5,6,7};,则数组 a 的第一维大小是( )。
A.2 B.3 C.4 D.无确定值
16、以下程序的输出结果为( )。
char str[15]="hello!"; printf("%d %d\n",strlen(str),sizeof(str));
A.15 15 B.6 6 C.7 6 D.6 15
17、若有定义:int a[2][3];,以下选项中对 a 数组元素正确引用的是( )。
A.a[2][!1] B.a[2][3] C.a[0][3] D.a[1>2][!1.2]
18、在一个文件中定义的全局变量的作用域为( )。
A.本程序的全部范围 B.离定义该变量的位置最近的函数
C.函数内全部范围 D.定义该变量的位置开始到本文件结束
19、以下不正确的说法是( )。
A.全局变量、静态变量的初值是在编译时指定的
B.静态变量如果没有指定初值,则其初值为 0
C.局部变量如果没有指定初值,则其初值不确定
D.函数中的静态变量在函数每次调用时,都会重新设置初值
20、函数调用语句 fun(fun1(a1,a2),(a3,a4),a5=x+y);函数 fun 含有实参的个数为( )。
A.1 B.2 C.3 D.5
21、以下不正确的说法是( )。
A.实参可以是常量、变量或表达 B.形参可以是常量、变量或表达式
C.实参可以为任意类型
D.形参和实参类型不一致时以形参类型为准
22、若已定义“int a[]={2,3,4,5,6},*p=a+1;”,则 p[2]的值是( )。
A.无意义 B.3 C.4 D.5
23、执行以下程序后,y 的值是( )。
void main()
{
int a[]={2,4,6,8,10}, y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++) y+=*(p+x);
printf("%d\n",y);
}
A.17 B.18 C.19 D.20