━━━━━━━━━━━━━━━━━━
一、单项选择  共300题
━━━━━━━━━━━━━━━━━━
第2题 (1.0分)  题号:681
以下运算符中优先级最低的是()。
A:&&
B:&
C:||
D:|
答案:C
第3题 (1.0分)  题号:187
经过下列的语句 int j,a[10],*p;定义后,下列语句中合法的是()。
A:p=p+2;
B:p=a[5];
C:p=a[2]+2;
D:p=&(j+2);
答案:A
第7题 (1.0分)  题号:742
若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)
的返回值是()。
A:EOF
B:0
C:非零值
D:NULL
答案:C
第8题 (1.0分)  题号:108
设C语言中,int类型数据占2个字节,则short类型数据占()。
A:1个字节
B:2个字节
C:4个字节
D:8个字节
答案:B
第9题 (1.0分)  题号:489
下列标识符中,不合法的C语言用户自定义标识符是()。
A:printf
B:enum
C:_
D:sin
答案:B
第10题 (1.0分)  题号:646
若有说明 int a[3][4];则a数组元素的非法引用是()。
A:a[0][2*1]
B:a[1][3]
C:a[4-2][0]
D:a[0][4]
答案:D
第11题 (1.0分)  题号:658
若使用一维数组名作函数实参,则以下正确的说法是()。
A:必须在主调函数中说明此数组的大小
B:实参数组类型与形参数组类型可以不匹配
C:在被调用函数中,不需要考虑形参数组的大小
D:实参数组名与形参数组名必须一致
答案:A
第13题 (1.0分)  题号:145
经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在
微机上的值分别为()。
char  x=65;
float  y=7.3; 
int  a=100;
double  b=4.5;
A:2,2,2,4
B:1,2,2,4
C:1,4,2,8
D:2,4,2,8
答案:C
第14题 (1.0分)  题号:106
以下叙述中不正确的是()。
A:一个好的程序应该有详尽的注释
B:在C程序中,赋值运算符的优先级最低
C:在C程序中,j++;是一条赋值语句
D:C程序中的#include和#define均不是C语句
答案:B
第16题 (1.0分)  题号:711
下列选项中正确的语句组是()。
A:char s[8]; s={"Beijing"};
B:char *s; s={"Beijing"};
C:char s[8]; s="Beijing";
D:char *s; s="Beijing";
答案:D
第17题 (1.0分)  题号:195
若有下列定义和语句,则对a数组元素的非法引用是()。
int a[2][3], (*pt)[3]; pt=a;
A:pt[0][0]
B:*(pt+1)[2]
C:*(pt[1]+2)
D:*(a[0]+2
答案:B
第20题 (1.0分)  题号:715
若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是()。
A:i=*p;
B:*p=*&j;
C:i=&j;
D:i=**p;
答案:B
第22题 (1.0分)  题号:431
下列程序的输出结果是()。
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=1,b=0
B:a=2,b=1
C:a=1,b=1
D:a=2,b=2
答案:B
第23题 (1.0分)  题号:552
应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。
A:fclose()
B:close()
C:fread()
D:fwrite
答案:A
第24题 (1.0分)  题号:556
static struct {int a1;float a2;char a3;}a[10]={1,3.5,'A'};
说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存
储方式,其中被初始化的下标变量是()。
A:a[1]
B:a[-1]
C:a[0]
D:a[10]
答案:C
fread和fwrite的区别第25题 (1.0分)  题号:543
若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5
的语句为()。
A:printf("%d",*(a+5));
B:printf("%d",p[5]);
C:printf("%d",*(p+5));
D:printf("%d",*p[5]);
答案:D
第26题 (1.0分)  题号:580
设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的
数据类型为()。
A:int
B:float
C:double
D:不确定
答案:C
第27题 (1.0分)  题号:199
若有int a[][]={{1,2},{3,4}};  则*(a+1),*(*a+1)的含义分别为()。
A:非法,2
B:&a[1][0],2
C:&a[0][1],3
D:a[0][0],4
答案:B
第28题 (1.0分)  题号:148
C语言中要求对变量作强制定义的主要理由是()。
A:便于移植
B:便于写文件
C:便于编辑预处理程序的处理
D:便于确定类型和分配空间
答案:D
第29题 (1.0分)  题号:202
设有如下定义: struct sk  {int a;  float  b;} data,*p;
若要使p指向data中的a域,正确的赋值语句是()。
A:p=(struct sk*)&data.a;
B:p=(struct sk*) data.a;
C:p=&data.a;
D:*p=data.a;
答案:A
第30题 (1.0分)  题号:697
若x=2,y=3则x&y的结果是()。
A:0
B:2
C:3
D:5
答案:B
第31题 (1.0分)  题号:136
下列程序的输出结果为()。
main()
{int m=7,n=4;
float  a=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf("%f\n",x);
}
A:27.000000
B:27.500000
C:28.000000
D:28.500000
答案:A
第33题 (1.0分)  题号:523
函数的形式参数隐含的存储类型说明是()。
A:extern
B:static
C:register
D:auto
答案:D
第34题 (1.0分)  题号:550
不仅可将C源程序存在磁盘上,还可将数据按数据类型分别以什么的
形式存在磁盘上()。
A:内存
B:缓冲区
C:文件
D:寄存器
答案:C
第35题 (1.0分)  题号:571
以下叙述正确的是()。
A:在C程序中,main函数必须位于程序的最前面
B:C程序的每行中只能写一条语句
C:C语言本身没有输入输出语句
D:在对一个C程序进行编译的过程中,可发现注释中的拼写错误
答案:C
第38题 (1.0分)  题号:151
以下程序的运行结果是()。
main()
{
int  i=1,sum=0;
while(i<10)  sum=sum+1;i++;
printf("i=%d,sum=%d",i,sum);
}
A:i=10,sum=9
B:i=9,sum=9
C:i=
2,sum=1
D:运行出现错误
答案:D
第40题 (1.0分)  题号:632
以下叙述正确的是()。
A:do-while语句构成的循环不能用其它语句构成的循环来代替.
B:do-while语句构成的循环只能用break语句退出.
C:用do-while语句构成的循环,在while后的表达式为非零时结束循环.
D:用do-while语句构成的循环,在while后的表达式为零时结束循环
答案:D
第41题 (1.0分)  题号:500
下列程序段的输出结果为()。
int x=3,y=2;
printf("%d",(x-=y,x*=y+8/5));
A:1
B:7
C:3
D:5
答案:C
第42题 (1.0分)  题号:518
char a[]="This is a program.";输出前5个字符的语句是()。
A:printf("%.5s",a);
B:puts(a);
C:printf("%s",a);
D:a[5*2]=0;puts(a);
答案:A
第43题 (1.0分)  题号:669
若用数组名作为函数的实参,传递给形参的是()。
A:数组的首地址
B:数组第一个元素的值
C:数组中全部元素的值
D:数组元素的个数
答案:A
第45题 (1.0分)  题号:531
C语言中,定义结构体的保留字是()。
A:union
B:struct
C:enum
D:typedef
答案:B
第47题 (1.0分)  题号:708
下面判断正确的是()。
A:char *a="china";等价于 char *a;*a="china";
B:char str[10]={"china"};等价于char str[10];str[]={"china"};
C:char *s="china";等价于 char *s;s="china";
D:char c[4]="abc",d[4]="abc";等价于 char c[4]=d[4]="abc";
答案:C
第48题 (1.0分)  题号:206
以下程序的输出结果是()。
main()
{ char  s[]="123",*p;
p=s;
printf("%c%c%c\n",*p++,*p++,*p++);
}
A:123
B:321
C:213
D:312
答案:B
第49题 (1.0分)  题号:579
在C语言中,char型数据在内存中的存储形式是()。
A:补码
B:反码
C:原码
D:ASCII码
答案:D
第50题 (1.0分)  题号:211
fgets(str,n,fp)函数从文件中读入一个字符串,以下正确的叙述是()。
A:字符串读入后不会自动加入'\0'
B:fp是file类型的指针
C:fgets函数将从文件中最多读入n-1个字符
D:fgets函数将从文件中最多读入n个字符
答案:C
第53题 (1.0分)  题号:92
以下的选择中,正确的赋值语句是()。
A:a=1,b=2
B:j++
C:a=b=5;
D:y=int(x)
答案:C
第54题 (1.0分)  题号:740
若要打开A盘上user子目录下名为的文本文件进行读、写操作,
下面符合此要求的函数调用是()。
A:fopen("A:\","r")
B:fopen("A:\\user\\","r+")
C:fopen("A:\","rb")
D:fopen("A:\\user\\","w")
答案:B
第55题 (1.0分)  题号:565
以下叙述中正确的是()。
A:C语言的源程序不必通过编译就可以直接运行
B:C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C:C源程序经编译形成的二进制代码可以直接运行
D:C语言中的函数不可以单独进行编译
案:B
第56题 (1.0分)  题号:157
下列程序的输出结果是()。
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=1,b=0
B:a=2,b=1
C:a=1,b=1
D:a=2,b=2
答案:B
第57题 (1.0分)  题号:558
int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是()。
A:2
B:3
C:4
D:不一定
答案:B
第60题 (1.0分)  题号:674
以下错误的描述是:函数调用可以()。
A:出现在执行语句中
B:出现在一个表达式中
C:做为一个函数的实参
D:做为一个函数的形参
答案:D
答案:D
第63题 (1.0分)  题号:524
与实际参数为实型数组名相对应的形式参数不可以定义为()。
A:float  a[];
B:float *a;
C:float a;
D:float (*a)[3];
答案:C
第64题 (1.0分)  题号:659
凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。
A:自动(auto)
B:静态(static)
C:外部(extern)
D:寄存器(register)
答案:A
第65题 (1.0分)  题号:636
若二维数组a有m列,则在a[i][j]前的元素个数为()。
A:j*m+i
B:i*m+j
C:i*m+j-1
D:i*m+j+1
答案:B
第66题 (1.0分)  题号:146
用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是()。
long  a=0xffffff;
int  b;  char  c;
A:0ffffff 和0x61
B:-1和98
C:-1和97
D:指向同一地址
答案:C
第67题 (1.0分)  题号:584
设有说明:char w;int x;float y;double z;则表达式w*x+z-y
值的数据类型为()。
A:float
B:char
C:int
D:double
答案:D
第70题 (1.0分)  题号:676
以下只有在使用时才为该类型变量分配内存的存储类说明是()。
A:auto和 static
B:auto和 register
C:register和 static
D:extern和 register
答案:B
第73题 (1.0分)  题号:613
下面有关 for 循环的正确描述是()。
A:for 循环只能用于循环次数已经确定的情况
B:for 循环是先执行循环循环体语句,后判断表达式
C:在 for 循环中,不能用 break 语句跳出循环体
D:for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
答案:D
第74题 (1.0分)  题号:116
下列语句的结果是()。
main()
{ int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A:3,3
B:3,4
C:4,3
D:4,4
答案:D
第75题 (1.0分)  题号:680
在调用函数时,如果实参是简单变量,它与对应形参之间的数据
传递方式是()。
A:地址传递
B:单向值传递
C:由实参传给形参,再由形参传回实参
D:传递方式由用户指定
答案:B
第76题 (1.0分)  题号:91
以下数值中,不正确的八进制
数或十六进制数是()。
A:0x16
B:16
C:-16
D:0xaaaa
答案:C
第77题 (1.0分)  题号:541
若有int i=3,*p;p=&i;下列语句中输出结果为3的是()。
A:printf("%d",&p);
B:printf("%d",*i);
C:printf("%d",*p);
D:printf("%d",p);
答案:C
第78题 (1.0分)  题号:503
以下语句中,不能实现回车换行的是()。
A:printf("\n");
B:putchar("\n");
C:fprintf(stdout,"\n");
D:fwrite("\n",1,1,stdout);
答案:B
第79题 (1.0分)  题号:720
函数 rewind 的作用是()。
A:使位置指针重新返回文件的开头
B:将位置指针指向文件中所要求的特定位置
C:使位置指针指向文件的末尾
D:使位置指针自动移至下一个字符位置
答案:A
第80题 (1.0分)  题号:732
若执行fopen函数时发生错误,则函数的返回值是()。
A:地址值
B:0
C:1
D:EOF
答案:B
第82题 (1.0分)  题号:736
以下叙述中错误的是()。
A:二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B:在程序结束时,应当用fclose函数关闭已打开的文件
C:在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D:不可以用FILE定义指向二进制文件的文件指针
答案:D
第83题 (1.0分)  题号:123
执行下列程序后,其输出结果是()。
main()
{int  a=9;
a+=a-=a+a;
printf("%d\n",a);
}
A:18
B:9
C:-18
D:-9
答案:C
第84题 (1.0分)  题号:180
以下函数调用语句中实参的个数是()。 
func((e1,e2),(e3,e4,e5));
A:2
B:3
C:5
D:语法错误
答案:A
第90题 (1.0分)  题号:703
若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是()。
A:&t[3][2]
B:t[3]
C:&t[1]
D:t[2]
答案:D
第91题 (1.0分)  题号:491
下列程序段的输出结果为()。
float k=0.8567;
printf("%06.1d%%",k*100);
A:0085.6%%
B:0085.7%
C:0085.6%
D:.857
答案:B
第92题 (1.0分)  题号:542
若有int *p=(int *)malloc(sizeof(int));则向内存申请到内存
空间存入整数123的语句为()。
A:scanf("%d",p);
B:scanf("%d",&p);
C:scanf("%d",*p);
D:scanf("%d",**p);
答案:A
第93题 (1.0分)  题号:597
下列四个选项中,均是C语言关键字的选项是()。
A:auto  enum    include
B:switch  typedef  continue
C:signed  union  scanf
D:if  struct  type
答案:B
第94题 (1.0分)  题号:164
下列数组说明中,正确的是()。
A:static char str[]="China";
B:static char str[]; str="China";
C:static char str1[5],str2[]={"China"}; str1=str2;
D:static char str1[],str2[];str2={"China"}; strcpy(str1,str2);
答案:A
第97题 (1.0分)  题号:643
以下能对一维数组a进行正确初始化的语句是()。
A:int a[10]=(0,0,0,0,0)
B:int a[10]={};
C:int a[]={0};
D:int a[10]={10*1};
答案:C
第98