1.C语言结构体类型变量在程序执行期间(C)。
A.部分成员驻留在内存中
B.只有一个成员驻留在内存中
C.所有成员一直驻留在内存中
D.没有成员驻留在内存中
2.若要说明一个类型名STP,使得定义语句STPs等价于char *s,以下选项中正确的是(A)。
A.typedef char* STP;
B.typedef stp *char;
C.typedef STP char *s;
D.typedef*char STP;
3.若已建立下面的链表结构,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾的语句组是(B) 。
A.s->next = NULL; p = p->next; p->next = s;
B.p = p->next; s->next = p; p->next = s;
C.p = (*p).next; (*s).next = (*p).next; (*p).next= s;
4.以下程序运行后的输出结果是(A)。
#include
struct NODE
{ int num;
struct NODE *next; };
main()
{struct NODE *p, *q, *r;
int sum = 0;
p =(struct NODE *)malloc(sizeof(struct NODE));
q=(struct NODE *)malloc(sizeof(struct NODE));
r=(struct NODE *)malloc(sizeof(struct NODE));
p->num = 1; q -> num = 2; r -> num = 3;
p ->next = q; q -> next = r ; r -> next = NULL;
sum += q-> next -> num; sum += p ->num;
printf("%d\n", sum);
}
A.4
B.3
C.5
D.6
5.不仅可将C源程序存在磁盘上,还可将数据按数据类型分别以什么的形式存在磁盘上(D)。
A.内存
B.寄存器
C.缓冲区
D.文件
6.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数
feof(fp)的值为(D)。
A.一个非0值
B.-1
C.1
D.0
7.若以"a+"方式打开一个已存在的文件,则以下叙述正确的是(D)。
A.文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作
B.其他各种说法皆不正确
C.文件打开时,原有文件内容被删除,只可作写操作
D.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作
8.在执行fopen 函数时,ferror 函数的初值是(D)。
A.TRUE
B.1
C.-1
D.0
9.若变量已正确定义并赋值,下面符合C语言语法的表达式是(C)。
A.a:=b+1
B.a=a+7=c+b
C.a=b=c+2
D.int18.5%3
10.以下叙述不正确的是(B)。
A.C程序的基本组成单位是函数
B.在C程序中,注释说明只能位于一条语句的后面
C.一个C源程序可由一个或多个函数组成
D.一个C源程序必须包含一个main函数
11.以下叙述中正确的是(C)。
A.在以下定义中C R 是称为"宏名"的标识符 #defineC R 045
B.在程序的一行上可以出现多个有效的预处理命令行
C.宏替换不占用运行时间,只占编译时间
D.使用带参的宏时,参数的类型应与宏定义时的一致
12.以下叙述中正确的是(B)。
A.C语言中的函数不可以单独进行编译
B.C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C.C源程序经编译形成的二进制代码可以直接运行
D.C语言的源程序不必通过编译就可以直接运行
13.以下运算符中,优先级最高的运算符是(B)。
A.*(乘号)
B.()
C.!=
D.=
14.已知x=43,ch='A',y=0;则表达式(x>=y&&ch
A.语法错
B.0
C.1
D."假"
15.若a=1,b=2则a|b的值是(D)。
A.1
B.2
C.0
D.3
16.以下程序的输出结果是B
main()
{ int x = 35; char z = ‘A’;
printf(“%d\n”, (x & 15) && (z < ‘a’) );
}
A.2
B.1
C.0
D.3
17.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是(说明:'\b'是退格符)(A)。
A.re'hi'you
B.a\bre\'hi\'y\\\bou
C.abre'hi'y\bou
D.a\bre\'hi\'y\bou
18.若有以下程序:
main()
{ int k=2,i=2, m;
m=(k+=i*=k);printf("%d,%d\n",m,i);
}
执行后的输出结果是(B)
A.8,3
B.6,4
C.7,4
D.8,6
19.以下不符合C语言语法的赋值语句是(C)。
A.a=b=5;
B.y=(a=3,6*5);
C.a=1,b=2
D.j=j+1;
20.下列程序的输出结果是(D)。
main()
{int a=7,b=5;
printf("%d\n",b=b/a);
}
A.不确定值
B.1
C.5
D.0
21.下列程序的输出结果是(A)。
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A.a=2,b=1
B.a=1,b=0
C.a=2,b=2
D.a=1,b=1
22.有以下程序
main()
{
int a=5, b=4,c=3, d=2;
if(a>b>c)
printf("%d\n",d);
elseif((c-1 >= d) == 1)
printf("%d\n",d+1);
else printf("%d\n",d+2);
}
执行后输出结果是(D)
A.2
B.4
C.编译时出错
D.3
23.假定所有变量均已正确定义,下列程序段运行后x的值是(D)。
k1=1;
k2=2;
k3=3;
x=15;
if(!k1) x--;
else if(k2) x=4;
else x=3;
A.15
B.14
C.3
D.4
24.选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为"真"或"假"。哪个数作为逻辑"假"值(D)。
A.非零的数
B.1
C.-1
D.0
25.以下描述中正确的是(D)。
A.do-while循环中,根据情况可以省略 while
B.由于do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
C.do-while循环由do开始,用while结束,在 while(表达式)后面不能写分号
D.在do-while 循环体中,一定要有能使 while 后面表达式的值变为零("假")的操作
26.判断两个字符串是否相等,正确的表达是(D)
A.while(s1=s2)
B.while(s1= =s2)
C.while(strcmp(s1,s2)=0)
D.while(strcmp(s1,s2)= =0)
27.若i为整型变量,则以下循环执行次数是(A)。
for(i=2;i==0;)printf("%d",i--);
A.0次
B.1次
C.无限次
D.2次
28.while(fabs(t)<1e-5)if(!(s/10)) break;其中int s;循环结束的条件是(C)。
A.fabs(t)<1e-5&&!s/10
B.t>=1e-5&&t<=-1e-5&&s>-10&&s<10
C.(t>=1e-5||t<=-1e-5)&&(s>-10&&s<10)
D.s/10==0
29.以下定义语句中,错误的是(B)。
A.char*a[3];
B.chars[10];s="test";
C.chars[10]="test";
D.inta[]={1,2};
30.以下定义语句中,错误的是(D)。
A.char*a[3];
B.chars[10];s="test";
C.chars[10]="test";
D.inta[]={1,2};
31.以下程序的输出结果是(D)
main()
{ int i, x[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for(i= 0; i < 3; i++)
printf("%d,", x[i][2-i]);
}
A.1,5,9,
B.3,6,9,
C.1,4,7,
D.3,5,7,
32.若有定义语句:charc[5]={‘a’,’b’,’\0’,’c’,’\0’};, 则执行语句pritnf(“%s”, c);的结果是(D)
A.ab c
B.ab\0c
C.‘a’’b’
D.ab
33.以下叙述中不正确的是(C)。
A.表达式a&=b等价于a=a&b
B.表达式a|=b等价于a=a|b
C.表达式a!=b等价于a=a!b
D.表达式a^=b等价于a=a^b
34.任何一个C语言的可执行程序都是从(A)开始执行的.
A.main()函数的入口处
B.编译预处理语句
C.程序中的第一条语句
D.程序中的第一个函数
35.以下正确的说法是(C)。
A.return后边的值不能为表达式
B.定义函数时,形参的类型说明可以放在函数体内
C.如果函数值的类型与返回值类型不一致,以函数值类型为准
D.如果形参与实参类型不一致,以实参类型为准
36.以下正确的函数形式是(B)
A.
B.
C.
D.
37.以下程序的输出结果是(A)
main()
{ int k= 2, m = 4, n = 6;
int *pk = &k, *pm = &m, *p;
*(p = &n) = *pk * (*pm);
printf("%d\n", n);
}
A.8
B.10
C.6
D.4
38.当运行以下程序时输入OPEN THEDOOR,则输出结果是(C)
#include
char fun(char *c)
{ if(*c <= 'Z' && *c >= 'A' )
*c -= 'A' - 'a';
return*c;
}
main()
{ char s[8], *p = s;
gets(s);
while(*p)
{ *p = fun( p );
putchar(*p); p++;
}
putchar('\n');
}
A.oPENtHE dOOR
B.OpenThe Door
C.openthe door
D.OPENTHE DOOR
39.关于指针概念说法不正确的是(A)。
A.指针变量可以由整数赋,不能用浮点赋
D.一个指针变量只能指向同一类型变量
40.若有定义和语句:
int a[4][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11, 12}, (*prt )[3] = a, *p[4], i;
for(i = 0; i < 4; i++)
p[i] = a[i];
则不能够正确表示a数组元素的表达式是(B)
A.(*(p+1))[1]
B.a[4][3]
C.p[0][0]
D.prt[2][2]