11)以下不合法的用户标识符是
 A)j2_KEY
 B)Double
 C) 4d
 D) _8_
12)以下不合法的数值常量是
 A)011
 B)lel
 C) 8.0 E0.5
 D) 0xabcd
13)以下不合法的字符常量是
 A)'\018'
 B '\”'
 C) '\\'
 D) ‘\xcc'
14)表达式3.6-5/2+1.2+5%2的值是
 A)4.3
 B) 4.8
 C) 3.3
 D) 3.8
15)以下能正确定义字符串的语句是
 A)char str[]={‘\064'};
 B) char str=”\x43”;
 C) char str=”;  
 D) char str[]=”\0”;
16)以下数组定义中错误的是
 A) int x[][3]={0};
 B) int x[2][3]={{1,2},{3,4},{5,6}};
 C) nt x[][3]={{1,2,3},{4,5,6}};
 D)int x[2][3]={1,2,3,4,5,6};
17)若要求从键盘读入含有空格字符的字符串,应使用函数
 A)getc()
 B) gets()
 C) getchar()
 D) scanf()
18) 下四个程序中,完全正确的是
 A)#include  B)#include
 main(); main()
{/*programming*/  {/*/programming/*/
printf(“programming!\n”);  } printf(“programming!\n”);}
 C) #include   D) include
 main() main()
{/*/*programming*/*/  {/*programming*/
printf(“programming!\n”);}  printf(“programming!\n”);}
19)若有定义:float x=1.5; int a=1,b=3,c=2;则正确的switch语句是
 A)switch(x)  B) switch((int)x);
{case 1.0,printf(“*\n”); {case 1,printf(“*\n”);
Case 2.0,printf(“**\n”); } case 2,printf(“**\n”);}
 C) switch(a+b) D) switch(a+b)
{ case 1,printf(“*\n”);  {case 1,printf(*\n”);
case 2+1,printf(“**\n”);}  case c,printf(“**\n”);}
20)若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是
 A)main() B) float fun(int a,int b){……}
{……x=fun(2,10);……}  main()
float fun(int a,int b){……} {……x=fun(i,j);……}
 C)float fun(int,int); D) main()
main() { float fun(int i,int j);
{……x=fun(2,10);……}  ……x=fun(i,j);……}
float fun(int a,int b){……} float fun(int a,int b){……}
21)在以下给出的表达式中,与while(E)中的(E)不等价的表达式是
 A)(!E=0)
 B) (E>0||E<0)
 C) (E==0)
 D) (E!=0)
22)要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是
 A) while((ch=getchar())!='N') printf(“%c”,ch);
 B) while(ch=getchar()!='N') printf(“%c”,ch);
 C) while(ch=getchar()==N') printf(“%c”,ch);
 D) while((ch=getchar())=='N') printf(“%c”,ch);
23)已定义以下函数
int fun(int *p)
{return *p;}
fun 函数返回值是
 A)不确定的值  
 B)一个整数
 C)形参p中存放的值
 D)形参p的地址值
24)若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是
 A)*p=&a; scanf(“%lf”,p);
 B)*p=&a; scanf(“%f”,p);
 C) p=&a; scanf(“%lf”,*p);
 D)p=&a; scanf(“%lf”,p);
25)现有以下结构体说明和变量定义,如图所示,指针p,q,r分别指向一个链表中连续的三个结点。
struct node
{
char data;
struct node *next;
}*p,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是
 A)q->next=r->next; p->next=r; r->next=q;
 B) p->next=r; q->next=r->next; r-.next=q;
 C) q->next=r->next; r->next=q; p->next=r;
 D) r->next=q; p-next=r; q-next=r->next;
26)有以下程序段
struct st
{ int x; int *y;}*pt,
int a[]={1,2},b[]={3,4};
struct st c[2]={10,a,20,b};
pt=c;
以下选项中表达式的值为11的是
 A) *pt->y
 B) pt->x
 C) ++pt->x
 D) (pt++)->x
27)设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为
 A)EOF
 B)非0值
 C) 0
 D)NULL
28)设有以下语句
int a=1,b=2,c;
c=a^(b<<2);
执行后,c的值为
 A)6
 B) 7
 C) 8
 D) 9
29)有以下程序
#include
main()
{
char c1,c2,c3,c4,c5,c6;
scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1); putchar(c2);
printf(“%c%c\n”,c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是
 A)1267
 B)1256
 C) 1278
 D)1245
30)若有以下程序
main()
{int y=10;
while(y- -); printf(“y=%d\n”y);
}
程序运行后的输出结果是
 A)y=0
 B)y=-1
 C) y=1
 D)while构成无限循环
31)有以下程序
main()
{
int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else d=3;
printf(“%d,%d,%d,%d\n”,a,b,c,d);
}
程序输出
 A)0,1,2,0
 B) 0,0,0,3
 C)1,1,2,0
 D)编译有错
32)有以下程序
main()
{
int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<=3;j++)
{
if(j%2) continue;
x++;
}
x++;
}
printf(“x=%d\n”,x);
}
程序执行后的输出结果是
 A)x=4
 B) x=8
 C) x=6
 D) x=12
33)有以下程序
int fun1(duoble a){return a*=a;}
int fun2(dpuble x,double y)
{
double a=0,b=0;
a=fun1(x); b=fun1(y); return (int)(a+b);
}
main()
{double w; w=fun2(1.1,2.0);……}
程序执行后变量w中的值是
 A)5.21
 B) 5
 C) 5.0
 D) 0.0
34)有以下程序
main()
{
int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++) printf(“%d”,t[2-i][i]);
}
程序的执行后的输出结果是
 A)7 5 3
 B) 3 5 7
 C)3 6 9
 D)7 5 1
35)有以下程序
fun(char p[][10])
{int n=0,i;
for(i=0;i<7;i++)
if(p[i][0]=='T') n++;
return n;
}
main()
{
char str[][10]={“Mon”,“Tue”,“Wed”,“Thu”,”Fri”,”Sat”,”Sun”};
printf(“%d\n”,fun(str));
}
程序执行后的输出结果是
 A)1
 B) 2
 C)3
 D) 0
36有以下程序
main()
{
int i,s=0,t[]={1,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2) s+=*(t+i);
printf(“%d\n”,s);
}
程序执行后的输出结果是
 A)45
 B)20
 C)25
 D)36
37)有以下程序
void fun1(char *p)
{
char *q;
q=p;
while(*q!='\0')
{ (*q)++; q++; }
}
main()
{ char a[]={“Program”},*p;
p=&a[3]; fun1(p); printf(“%s\n”,a);
}
程序执行后的输出结果是
 A)P rohsbn
 B)Prphsbn
 C)Progsbn
 D)Program
38)有以下程序
void swap(char *x,char *y)
{
char t;
t=*x; *x=*y; *y=t;
}
main()
{
char *s1=”abc”,*s2=”123”;
swap(s1,s2); printf(“%s,%s\n”,s1,s2);
}
程序执行后的输出结果是
 A)123,abc
 B) abc,123
 C)1bc,a23
 D) 321,cba
39)有以下程序
int fun(int n)
{
if(n==1) return 1;
else
return (n+fun(n-1));
}
main()
{
int x;
scanf(“%d”,&x); x=fun(x); printf(“%d\n”,x);
}
程序执行时,给变量x输入10,程序的输出结果是
 A)55
 B) 54
 C) 65
 D) 45
40)有以下程序
int fun(int x[],int n)
{static int sum=0,i;
for(i=0;i sum+=x[i];
return sum;
}
main()
{int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4); printf(“%d\n”,s);
}
程序执行后的输出结果是
 A)45
 B)50
 C)60
 D)55
41)有以下程序
main()
{
union {
char ch[2];
int d;
}s;
s.d=0x4321;
printf(“%x,%x\n”,s.ch[0],s.ch[1]);
}
在16位编译系统上,程序执行后的输出结果是
 A)21,43
 B)43,21
 C)43,00
 D)21,00
42)有以下程序
main()
{
char *p[]={“3697”,”2584”};
int i,j; long num=0;
for(i=0;i<2;i++)
{j=0;
while(p[i][j]!='\0')
{ if((p[i][j]-‘0')%2)num=10*num+p[i][j]-‘0';
j+=2;
} }
printf(“%d\n”num);
}
程序执行后的输出结果是
 A)35
 B)37
 C)39
 D)3975
43)执行以下程序后,test.txt文件的内容是(若文件能正常打开)
#include
main()
{
FILE *fp;
char *s1=”Fortran”,*s2=”Basic”;
if((fp=fopen(“test.txt”,”wb”))==NULL)
{ printf(“Can't open test.txt file\n”); exit(1);}
fwrite(s1,7,1,fp); /*把从地址s1开始的7个字符写到fp所指文件中*/
fseek(fp,0L,SEEK_SET); /*文件位置指针移到文件开头*/
fwrite(s2,5,1,fp);
fclose(fp);
}
 A)Basican
 B)BasicFortran
 C)Basic
 D)FortranBasic
44)以下叙述中错误的是
 A)C语言源程序经编译后生成后缀为.obj的目标程序
 B)C语言经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
 C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
 D)C语言的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
45)以下叙述中错误的是
 A)算法正确的程序最终一定会结束
 B)算法正确的程序可以有零个输出
 C)算法正确的程序可以有零个输入
 D)算法正确的程序对于相同的输入一定有相同的结果
46)以下叙述中错误的是
 A)C程序必须由一个或一个以上的函数组成
 B)函数调用可以作为一个独立的语句存在
 C)若函数有返回值,必须通过return语句返回
 D)函数形参的值也可以传回对应的实参
47)设有以下定义和语句
char str[20]=”Program”,*p;
p=str;
则以下叙述中正确的是
 A)*p与str[0]中的值相等
 B)str与p的类型完全相同
 C)str数组长度和p所指向的字符串长度相等
 D)数组str中存放的内容和指针变量p中存放的内容相同
48)以下叙述中错误的是
 A)C程序中的#include和#define行均不是C语句
 B)除逗号运算符外,赋值运算符的优先级最低
 C)C程序中,j++;是赋值语句
 D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算
49)以下叙述中正确的是
 A)预处理命令行必须位于C源程序的起始位置
 B)在C语言中,预处理命令行都以“#”开头
 C)每个C程序必须在开头包括预处理命令行:#include
 D)C语言的预处理不能实现宏定义和条件编译的功能
50)以下叙述中错误的是
 A)可以通过typedef增加新的类型
 B)可以用typedef将已存在的类型用一个新的名字来代表
 C)用typedef定义新的类型名后,原有类型名仍有效
 D)用typedef可以为各种类型起别名,但不能为变量起别名