最新C语言最终模拟题含答案.docx
《最新C语言最终模拟题含答案.docx》由会员分享,可在线阅读,更多相关《最新C语言最终模拟题含答案.docx(52页珍藏版)》请在冰豆网上搜索。
最新C语言最终模拟题含答案
题号1.以下选项中,能用作用户标识符的是(C)。
A:
void
B:
8_8
C:
_0_
D:
unsigned
题号2...选择题A:
(1分,正确答案A,学生答案*)
阅读以下程序
#include
main()
{intcase;floatprintF;
printf("请输入2个数:
");
scanf("%d%f",&case,&printF);
printf("%d%f\n",case,printF);
}
该程序在编译时产生错误,其出错原因是()。
A:
定义语句出错,case是关键字,不能用作用户自定义标识符
B:
定义语句出错,printF不能用作用
户自定义标识符
C:
定义语句无错,scanf不能作为输入函数使用
D:
定义语句无错,printf不能输出case的值
题号3...选择题A:
(1分,正确答案B,学生答案B)
表达式:
(int)((double)9/2)-(9)%2的值是()。
A:
0
B:
3
C:
4
D:
5
题号4...选择题A:
(1分,正确答案B,学生答案D)
若有定义语句:
intx=10;,则表达式x-=x+x的值为()。
A:
-20
B:
-10
C:
0
D:
10
题号5...选择题A:
(1分,正确答案D,学生答案*)
有以下程序
#include
main()
{
inta=1,b=0;
printf("%d,",b=a+b);
printf("%d\n",a=2*b);
}
程序运行后的输出结果是()。
A:
0,0
B:
1,0
C:
3,2
D:
1,2
题号6...选择题A:
(1分,正确答案A,学生答案*)
有以下程序
#include
main()
{
intc=0,k;
for(k=1;k<3;k++)
switch(k)
{
default:
c+=k;
case2:
c++;break;
case4:
c+=2;break;
}
printf("%d\n",c);
}
程序运行后的输出结果是()。
A:
3
B:
5
C:
7
D:
9
题号7...选择题A:
(1分,正确答案B,学生答案A)
当需要定义一个函数时,以下标识符中,()不能用作函数名。
A:
scanf
B:
for
C:
_sum
D:
F2
题号8...选择题A:
(1分,正确答案D,学生答案*)
已有声明语句"unsignedcharch;",与表达式"ch='B'"的值不相同的表达式是()。
(注释:
字符A的Ascii码以十进制表示为65)
A:
ch=0x42
B:
ch=0102
C:
ch='\102'
D:
ch=066
题号9...选择题A:
(1分,正确答案C,学生答案*)
若要对a进行++运算,则a应具有以下说明()。
A:
inta[3][2];
B:
char*a[]={"12","ab"};
C:
intb[10],*a=b;
D:
char(*a)(char);
题号10...选择题A:
(1分,正确答案B,学生答案*)
以下对于break语句使用的正确描述是()。
A:
可以出现在程序中的任何位置
B:
只能出现在循环或switch结构中
C:
只能出现在switch结构中
D:
只能出现在循环结构中
题号11...选择题A:
(1分,正确答案B,学生答案*)
若有声明语句"inta=5,b=4,c=3,*p=&a;",则下列()表达式语句是正确的。
A:
(*p)++=c;
B:
printf(a%4==0?
"%3d\n":
"%3d",*p);
C:
*(*p)++;
D:
a>20?
return*p-20:
return*p-1;
题号12...选择题A:
(1分,正确答案A,学生答案*)
设intx=2,y=3,z=(++x<=y--)?
((--y==1)?
y--:
--y):
y--;则x,y,z的值为()。
A:
3,0,1
B:
2,0,0
C:
3,1,1
D:
2,2,1
题号13...选择题A:
(1分,正确答案B,学生答案*)
在定义任何一个函数时,下列选项中,()是不可缺少的。
A:
函数名之前的数据类型
B:
函数名之后的一对圆括号
C:
形式参数声明
D:
函数体内的语句
题号14...选择题A:
(1分,正确答案D,学生答案*)
已知某程序如下:
floatp=1.5;
#definep2.5
main()
{printf("%f",p);}
则main函数中标识符p代表的操作数是()。
A:
float型变量
B:
double型变量
C:
float型常量
D:
double型常量
题号15...选择题A:
(1分,正确答案A,学生答案*)
已有声明"ints[2][3]",以下选项中()正确地引用了数组s中的基本元素。
A:
s[1>2][!
1]
B:
s[2][0]
C:
s[1]
D:
s
题号16...选择题A:
(1分,正确答案C,学生答案*)
若有声明"inta[5],*b=a,(*c)[3],*d[3];",则在以下表达式中有语法错误的是()。
A:
a[0]=0
B:
b[0]=0
C:
c[0]=0
D:
d[0]=0
题号17...选择题A:
(1分,正确答案C,学生答案*)
以下跳转语句中,只有()可以选择不唯一的跳转目的地。
A:
continue;
B:
break;
C:
goto标识符;
D:
return;
题号18...选择题A:
(1分,正确答案A,学生答案*)
一个用c语言编写的程序,()是必不可少的。
A:
取名为main的函数定义
B:
#include
C:
变量声明
D:
注释
题号19...选择题A:
(1分,正确答案D,学生答案*)
以下声明中正确的是()。
A:
intn=2,a[n]={10};
B:
intn=10,*p[2]=&n;
C:
intn=10,a[2]={n};
D:
inta[2][2]={10},(*p)[2]=a+1;
题号20...选择题A:
(1分,正确答案B,学生答案*)
若有函数fun的定义为
voidfun(…)
{staticinta=1;
...
}
则下列叙述中不正确的是()。
A:
在每次调用fun函数时,变量a的值是上次调用结束时a的值
B:
在fun函数之外,可以用变量名a直接
引用a的值
C:
在其他函数中,可以出现声明doublea=2.5;
D:
fun函数的形式参数不能取名为a
题号21...选择题A:
(1分,正确答案D,学生答案*)
以下单目运算符均只需一个操作数,其中要求操作数的类型只能是指针型的是()。
A:
&
B:
++
C:
!
D:
*
题号22...选择题A:
(1分,正确答案D,学生答案*)
C语言规定,在一个源程序中main函数的位置()。
A:
必须在最开始
B:
必须在最后
C:
必须在预处理命令的后面
D:
可以在其他函数之前或之后
题号23...选择题A:
(1分,正确答案D,学生答案B)
以下选项中,()是C语言关键字。
A:
printf
B:
include
C:
fun
D:
default
题号24...选择题A:
(1分,正确答案A,学生答案*)
已知有声明"inta=3,b=4,c;",则执行语句"c=1/2*(a+b);"后,c的值为()。
A:
0
B:
3
C:
3.5
D:
4
题号25...选择题A:
(1分,正确答案B,学生答案*)
设指针变量占2个字节的内存空间,若有声明"char*p="123";intc;",则执行语句"c=sizeof(p);"后,
c的值为()。
A:
1
B:
2
C:
3
D:
4
题号26...选择题A:
(1分,正确答案C,学生答案*)
已知有声明"inta=3,b=4;",下列表达式中合法的是()。
A:
a+b=7
B:
a=|b|
C:
a=b=0
D:
(a++)++
题号27...选择题A:
(1分,正确答案D,学生答案*)
已知有声明"chars[20]="Hello";",在程序运行过程中,若要想使数组s中的内容修改
为"Good",则以下语句中能够实现此功能的是()。
A:
s="Good";
B:
s[20]="Good";
C:
strcat(s,"Good");
D:
strcpy(s,"Good");
题号28...选择题A:
(1分,正确答案B,学生答案*)
已知有声明"intn;floatx,y;",则执行语句"y=n=x=3.89;"后,y的值为()。
A:
3
B:
3.0
C:
3.89
D:
4.0
题号29...选择题A:
(1分,正确答案C,学生答案A)
已知有声明"inta=12,b=15,c;",则执行表达式"c=(a||(b-=a))"后,变量b和c的值分别为()。
A:
3,1
B:
15,12
C:
15,1
D:
3,12
题号30...选择题A:
(1分,正确答案B,学生答案*)
已知int类型数据在内存中存储长度为2个字节,以下语句中能正确输出整数32768的是()。
A:
printf("%d",32768);
B:
printf("%ld",32768);
C:
printf("%f",32768);
D:
printf("%c",32768);
题号31...选择题A:
(1分,正确答案D,学生答案*)
已知有声明"inta=3,b=4,c=5;",以下表达式中值为0的是()。
A:
a&&b
B:
a<=b
C:
a||b&&c
D:
!
(!
c||1)
题号32...选择题A:
(1分,正确答案C,学生答案B)
已知有声明"longx,y;"且x中整数的十进制表示有n位数字(4掉整数x十进制表示中的最高位,用剩下的数字组成一个新的整数并保存到y中,
则以下表达式中能正确实现这一功能的是()。
A:
y=x/(10*(n-1))
B:
y=x%(10*(n-1))
C:
y=x%(long)pow(10,n-1)
D:
y=x%(10^(n-1))
题号33...选择题A:
(1分,正确答案B,学生答案B)
已知有声明"intm[]={5,4,3,2,1},i=0;",下列对m数组元素的引用中,错误是()。
A:
m[++i]
B:
m[5]
C:
m[2*2]
D:
m[m[4]]
题号34...选择题A:
(1分,正确答案C,学生答案*)
下列程序的输出结果是()。
main()
{inta=7,b=5;
printf("%d\n",b=b/a);
}
A:
5
B:
1
C:
0
D:
不确定值
题号35...选择题A:
(1分,正确答案B,学生答案*)
假设变量a,b均为整型,表达式(a=5,b=2,a>b?
a++:
b++,a+b)的值是()。
A:
7
B:
8
C:
9
D:
2
题号36...选择题A:
(1分,正确答案B,学生答案*)
设a为int型变量,执行下列赋值语句后,a的取值分别是()。
a=125.534;a=(int)125.521%4;a=5<<2;
A:
125,31,1
B:
125,1,20
C:
125,31,20
D:
125.534,2,20
题号37...选择题A:
(1分,正确答案C,学生答案*)
设有如下程序段,下面描述中正确的是()。
intk=10;while(k=0)k=k-1;
A:
循环执行一次
B:
循环是无限循环
C:
循环体语句一次也不执行
D:
循环体语句执行一次
题号38...选择题A:
(1分,正确答案A,学生答案*)
以下程序的输出结果为()。
inti;
voidprt()
{for(i=5;i<8;i++)printf("%c",'*');
printf("\t");
}
main()
{for(i=5;i<=8;i++)prt();
}
A:
***
B:
************
C:
******
D:
***
题号39...选择题A:
(1分,正确答案A,学生答案*)
以下函数调用语句中含有()个实参。
func((e1,e2),(e3,e4,e5));
A:
2
B:
3
C:
5
D:
语法错误
题号40...选择题A:
(1分,正确答案D,学生答案*)
C语言中的文件类型只有()。
A:
索引文件和文本文件两种
B:
文本文件一种
C:
二进制文件一种
D:
ASCII码文件和
二进制文件两种
题号41...选择题B:
(2分,正确答案D,学生答案*)
有以下程序
#include
main()
{intn=2,k=0;
while(k++&&n++>2);
printf("%d%d\n",k,n);
}
程序运行后的输出结果是()。
A:
02
B:
13
C:
57
D:
l2
题号42...选择题B:
(2分,正确答案D,学生答案*)
以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。
#defineMIN-2147483647
intfindmax(intx[],intn)
{inti,max;
for(i=0;i{max=MIN;
if(maxreturnmax;
}
造成错误的原因是()。
A:
定义语句inti,max;中max未赋初值
B:
赋值语句max=MIN;中,不应给max赋MIN值
C:
语句if(maxD:
赋值语句max=MIN;放错了位置
题号43...选择题B:
(2分,正确答案D,学生答案A)
下面是有关C语言字符数组的描述,其中错误的是()。
A:
不可以用赋值语句给字符数组名赋字符串
B:
可以用输入语句把字符串
整体输入给字符数组
C:
字符数组中的内容不一定是字符串
D:
字符数组只能存放字符串
题号44...选择题B:
(2分,正确答案C,学生答案*)
有以下程序
#include
intf(intn);
main()
{inta=3,s;
s=f(a);s=s+f(a);printf("%d\n",s);
}
intf(intn)
{staticinta=1;n+=a++;returnn;
}
程序运行后的输出结果是()。
A:
7
B:
8
C:
9
D:
10
题号45...选择题B:
(2分,正确答案B,学生答案*)
下面结构体的定义语句中,错误的是()。
A:
structord{intx;inty;intz;};structorda;
B:
structord{intx;inty;intz;}
structorda;
C:
structord{intx;inty;intz;}a;
D:
struct{intx;inty;intz;}a;
题号46...选择题B:
(2分,正确答案A,学生答案D)
设有定义:
char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是(A)。
A:
charstr[]="string";c=str;
B:
scanf("%s",c);
C:
c=getchar();
D:
c=*string";
题号47...选择题B:
(2分,正确答案D,学生答案*)
有以下程序
#include
#include
structA
{inta;charb[10];doublec;};
structAf(structAt);
main()
{structAa={1001,"ZhangDa",1098.0};
a=f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
structAf(structAt)
{t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;returnt;}
程序运行后的输出结果是()。
A:
1001,ZhangDa,1098.0
B:
1002,ZhangDa,1202.0
C:
1001,ChangRong,1098.0
D:
1002,ChangRong,1202.0
题号48...选择题B:
(2分,正确答案D,学生答案*)
下列程序段执行后的结果为()。
main()
{
staticinta[3][3]={1,3,5,7,9,11,13,15,17},y,x,*p=&a[2][2];
for(x=0;x<3;x++)y+=*(p-4*x);
printf("\n%d",y);
}
A:
45
B:
33
C:
17
D:
27
题号49...选择题B:
(2分,正确答案B,学生答案*)
设有定义如下;
typedefstuct{intx,y;}pOINT;
typedefenum{RED,YELLOW,BLUE,GREEN}COLOR;
struct{pOINTxy;COLORc;}pixel,*p=&pixel;
以下对变量pixel的赋值操作中正确的是()。
A:
pixel={1,2,BLUE};
B:
p->xy.x=1;p->xy.y=2;
p->c=BLUE;
C:
scanf("%d%d%d",p->xy.x,p->xy.y,&pixel.c);
D:
pixel.color=2;
题号50...选择题B:
(2分,正确答案C,学生答案*)
执行了以下程序段后,x、w的值为()。
intx=0,y=1,z=2,w;
if(x++)w=x;
elseif(x++&y>=1)w=y;
elseif(x++&&z>1)w=z;
A:
0、1
B:
1、1
C:
2、1
D:
3、2
题号51...选择题B:
(2分,正确答案B,学生答案*)
已有数据类型定义和变量声明如下:
structperson
{intnum;
charname[20],sex;
strrut{intcla;charprof[20];}in;
}a={20,"Lining",'M',{5,"computer"}},*p=&a;
下列语句中正确的是()。
A:
printf("%s",a->name);
B:
printf("%s",p->in.prof);
C:
printf("%s",*p.name);
D:
printf("%s",p->in->prof);
题号52...选择题B:
(2分,正确答案C,学生答案*)
已有预处理命令和声明如下:
#defineN10
inta=2,c=1;
doubleb=1.2;
下述程序段正确的是()。
A:
switch(a)
{casec:
a--;break;
casec+1:
a++;break;
}
B:
switch(a)
{caseN>0:
a=1;break;
case1:
a=O;break;
}
C:
switch(a)
{case2:
b++;break;
case'0':
b=3;
}
D:
switch(b)
{case1.0:
b++;break;
case1.2:
b=1;break;
}
题号53...选择题B:
(2分,正确答案C,学生答案*)
若有以下声明和定义:
voidfun(intc){printf("%d",c);}
main()
{void(*a)(int)=fun,*b(int),(*c)(int);
/*调用fun函数语句位置*/
}
void*b(intc){}
如果在main函数中需要调用fun函数,以下调用语句中错误的是()。
A:
fun
(1);
B:
(*a)
(1);
C:
b=fun;(*b)
(1);
D:
c=a;(*c)
(1);
题号54...判断题:
inti=20;switch(i/10){case2:
printf("A");case1:
printf("B");}的输出结果为A。
()
(对或错)
参考答案(1分)学生答案(0分)
错
题号55...判断题:
函数strlen("ASDFG\n")的值是7。
()(对或错)
参考答案(1分)学生答案(0分)
错~~F
题号56...判断题:
通过return语句,函数可以带回一个或一个以上的返回值。
(错)(对或错)
参考答案(1分)学生答案(0分)
题号57...判断题:
用fopen("file","r+");打开的文件"file"可以进行修改。
()(对或错)
参考答案(1分)学生答案(0分)
对
题号58...填空题:
若有定义语句:
inta=5;,则表达式:
a++的值是_____________。
参考答案(2分)学生答案(0分)
5
题号59...填空题:
若有语句doublex=17;inty;,当执行y=(int)(x/5)%2;之后y的值为_________。
参考答案(2分)学生答案(0分)
1
题号60...填空题:
有以下程序
#include
main()
{intf,f1,f2,i;
f1=0;f2=1;
printf("%d,%d",f1,f2);
for(i=3;i<=5;i++)
{f=f1+f2;printf("%d",f);
f1=f2;f2=f;
}
}
程序运行后的输出结果是___________。
参考答案(2分)学生答案(0分)
0,1123
题号61...填空题:
有以下程序
#include
inta=5;
voidfun(intb)
{inta=10;
a+=b;printf("%d",a);
}
main()
{intc=20;
fun(c);a+=c;printf("%d