C语言考试问题及答案.docx
- 文档编号:5542393
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:25
- 大小:24.02KB
C语言考试问题及答案.docx
《C语言考试问题及答案.docx》由会员分享,可在线阅读,更多相关《C语言考试问题及答案.docx(25页珍藏版)》请在冰点文库上搜索。
C语言考试问题及答案
一、单项选择题:
(1)以下叙述中错误的是
A)C语言中对二进制文件的访问速度比文本文件快
B)C语言中,随机文件以二进制代码形式存储数据
C)语句FILEfp;定义了一个名为fp的文件指针
D)C语言中的文本文件以ASCII码形式存储数据
(2)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是
A)feof(fp)
B)ftell(fp)
C)fgetc(fp)
D)rewind(fp)
(3)若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为
A)0
B)1
C)-1
D)一个非0值
(4)下列关于C语言数据文件的叙述中正确的是
A)文件由ASCII码字符序列组成,C语言只能读写文本文件
B)文件由二进制数据序列组成,C语言只能读写二进制文件
C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
(5)以下叙述中不正确的是
A)C语言中的文本文件以ASCⅡ码形式存储数据
B)C语言中对二进制文件的访问速度比文本文件快
C)C语言中,随机读写方式不适用于文本文件
D)C语言中,顺序读写方式不适用于二进制文件
(6)以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。
#include
main()
{FILE*fout;charch;
fout=fopen('abc.txt',’w');
ch=fgetc(stdin);
while(ch!
=’#’)
{fputc(ch,fout);
ch=fgetc(stdin);
}
fclose(fout);
}
出错的原因是
A)函数fopen调用形式错误B)输入文件没有关闭
C)函数fgetc调用形式错误D)文件指针stdin没有定义
(7)以下叙述中错误的是
A)二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B)在程序结束时,应当用fclose函数关闭已打开的文件
C)在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D)不可以用FILE定义指向二进制文件的文件指针
(8)在C程序中,可把整型数以二进制形式存放到文件中的函数是
A)fprintf函数
B)fread函数
C)fwrite函数
D)fputc函数
(9)标准函数fgets(s,n,f)的功能是
A)从文件f中读取长度为n的字符串存入指针s所指的内存
B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
C)从文件f中读取n个字符串存入指针s所指的内存
D)从文件f中读取长度为n-1的字符串存入指针s所指的内存
(10)以下程序的功能是进行位运算
main()
{unsignedchara,b;
a=7^3;b=~4&3;
printf("%d%d\n",a,b);
}
程序运行后的输出结果是
A)43
B)73
C)70
D)40
(11)有以下程序
main()
{
intc=35;printf("%d\n",c&c);
}
程序运行后的输出结果是
A)0
B)70
C)35
D)1
(12)设有定义语句:
charc1=92,c2=92;,则以下表达式中值为零的是
A)c1^c2
B)c1&c2
C)~c2
D)c1|c2
(13)有以下程序
main()
{unsignedchara,b;
a=4|3;
b=4&3;
printf(“%d%d\n”,a,b(;
}
执行后输出结果是
A)70
B)07
C)11
D)430
(14)有以下程序
main()
{intx=3,y=2,z=1;
printf("%d\n",x/y&~z);
}
程序运行后的输出结果是
A)3
B)2
C)1
D)0
(15)整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是
A)x||y
B)x|y
C)x&y
D)x^y
(16)设intb=2;表达式(b>>2)/(b>>1)的值是
A)0
B)2
C)4
D)8
(17)设有如下定义:
intx=l,y=-1;,则语句:
printf("%d\n",(x--&++y));的输出结果是
A)1
B)0
C)-1
D)2
(18)语句:
printf("%d\n",12&012);的输出结果是
A)12
B)8
C)6
D)012
(19)在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则
A)称为函数的直接递归调用
B)称为函数的间接递归调用
C)称为函数的循环调用
D)C语言中不允许这样的递归调用
(20)不合法的main函数命令行参数表示形式是
A)main(inta,char*c[])
B)main(intarc,char**arv)
C)main(intargc,char*argv)
D)main(intargv,char*argc[])
二、多项选择题:
(1)C语言规定,程序中各函数之间错误的描述为
A)既允许直接递归调用也允许间接递归调用
B)不允许直接递归调用也不允许间接递归调用
C)允许直接递归调用不允许间接递归调用
D)不允许直接递归调用允许间接递归调用
(2)以下关于函数的叙述中错误的是
A)每个函数都可以被其它函数调用(包括main函数)
B)每个函数都可以被单独编译
C)每个函数都可以单独运行
D)在一个函数内部可以定义另一个函数
(3)若程序中定义了以下函数
doublemyadd(doublea,doubleB)
{return(a+B);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中正确的说明是
A)doublemyadd(doublea,B);
B)doublemyadd(double,double);
C)doublemyadd(doubleb,doubleA);
D)doublemyadd(doublex,doubley);
(4)若已定义的函数有返回值,则以关于该函数调用的叙述中正确的是
A)调用可以作为独立的语句存在
B)调用可以作为一个函数的实参
C)调用可以出现在表达式中
D)调用可以作为一个函数的形参
(5)有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的错误调用语句是
A)fun(inty,doublem);
B)k=fun(10,12.5);
C)fun(x,n);
D)voldfun(n,x);
(6)在一个C程序中错误的描述
A)main函数必须出现在所有函数之前
B)main函数可以在任何地方出现
C)main函数必须出现在所有函数之后
D)main函数必须出现在固定位置
(7)C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型不是
A)void
B)int
C)float
D)double
(8)若有以下程序
#include
voidf(intn);
main()
{voidf(intn);
f(5);
}
voidf(intn)
{printf("%d\n",n);}
则以下叙述中正确的是
A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C)对于以上程序,编译时系统会提示出错信息:
提示对对f函数重复说明
D)函数f无返回值,所以可用void将其类型定义为无值型
(9)以下所列的各函数首部中,错误的是
A)voidplay(var:
Integer,varb:
Integer)
B)voidplay(inta,b)
C)voidplay(inta,intb)
D)Subplay(aasinteger,basinteger)
(10)以下叙述中正确的是
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
(11)以下说法中不正确的是
A)C语言程序总是从第一个的函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
(12)在C语言中,不合法的长整型常数是
A)0L
B)4962710
C)0.054838743
D)2.1869e10
(13)在下列选项中,正确的赋值语句是
A)++t;
B)n1=(n2=(n3=0));
C)k=i==j;
D)a=b+c=1;
(14)可以把字符串:
Hello!
赋给数组b的语句是
A)charb[10]={’H’,’e’,’l’,’l’,’o’,’!
’};
B)charb[10];b="Hello!
";
C)charb[10];strcpy(b,"Hello!
");
D)charb[10]="Hello!
";
(15)若程序中有下面的说明和定义
structabc
{intx;chary;}
structabcs1,s2;
则不会发生的情况是
A)编译进错
B)程序将顺利编译`连接`执行
C)能顺利通过编译`连接`但不能执行
D)能顺利通过编译`但连接出错
(16)不能正确表示a≥10或a≤0的关系表达式是
A)a>=10ora<=0
B)a>=10│a<=0
C)a>=10││a<=0
D)a>=10││a<=0
(17)若有以下程序段,w和k都是整型变量:
┆
w=k;
LB:
if(w==0)gotoLE;
w--;
printf("*");
gotoLB;
LE:
┆
则可以与上面程序段等价的循环语句是
A)for(w=k;w!
=0;w--)printf("*");
B)for(w=k;w;--w)printf("*");
C)w=k;
D)w=k;
while(w--!
=0)printf("*");w++;do{w--;printf("*");}while(w!
=0);
(18)若有说明,double*p,a;则能通过scanf语句不能正确给输入项读入数据的程序段是
A)*p=&a;scanf("%lf",p);
B)p=(double*)malloc(8);scanf("%f",p);
C)p=&a;scanf("%lf",a);
D)p=&a;scanf("%le",p);
(19)若有以下的说明和语句:
main()
{intt[3][2],*pt[3],k;
fpr(k=o;k<3;k++)pt[k]=t[k];
}
则以一选项中能不能正确表示t数组元素地址的表达式是
A)&t[3][2]
B)*pt[0]
C)*(pt+1)
D)&pt[2]
(20)要求函数的功能是在一维数组中查找值;若找到则返回所在的下标值,否则返回0;数列放在到中。
可以正确执行的函数是
A)funa(int*a,intn,intx)
B)funb(int*a,intn,intx)
{*a=x;{intk;
while(a[n]!
=x)n--;for(k=1;k<=n;k++)
returnn;if(a[k]==x)returnk;
}return0;}
C)func(inta[],intn,intx)
D)fund(inta[],intn,intx)
{int*k;{intk=0;
a[0]=x;k=a+n;do
while(*k!
=x)k--;k++;
returnk-n;while((k}if(a[k]==x)returnk;elsereturn0;}
(21)若有说明和语句:
inta=5;
a++;
此处表达式a++的值不正确的是
A)7
B)6
C)5
D)4
(22)在下列选项中,正确的赋值语句是
A)++t;
B)n1=(n2=(n3=0));
C)k=i==j;
D)a=b+c=1;
(23)若有说明:
inti,j=7,*p=&i;,则与i=j;不等价的语句是
A)I=*P;
B)*P=*&J;
C)i=&j;
D)i=**p;
(24)若有以下说明:
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='a',d,g;
则数值为4的表达式不正确的是
A)a[g-c]
B)a[4]
C)a['d'-'c']
D)a['d'-c]
(25)若有以下说明:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式不正确的是
A)*p+6
B)*(p+6)
C)*p+=5
D)p+5
(26)若有以下说明:
intw[3][4]o={{0,1},{2,4},{5,8}};
int(*p)[4]=w;
则数值为4的表达式不正确的是
A)*w[1]+1
B)p++,*(p+1)
C)w[2][2]
D)p[1][1]
(27)若程序中有下面的说明和定义
structabc
{intx;chary;}
structabcs1,s2;
则不会发生的情况是
A)编译进错
B)程序将顺利编译`连接`执行
C)能顺利通过编译`连接`但不能执行
D)能顺利通过编译`但连接出错
(28)不能正确表示a≥10或a≤0的关系表达式是
A)a>=10ora<=0
B)a>=10│a<=0
C)a>=10││a<=0
D)a>=10││a<=0
(29)若有说明,double*p,a;不能通过scanf语句正确给输入项读入数据的程序段是
A)*p=&a;scanf("%lf",p);
B)p=(double*)malloc(8);scanf("%f",p);
C)p=&a;scanf("%lf",a);
D)p=&a;scanf("%le",p);
(30)当执行下面程序且输入:
ABC时,输出的结果不正确的是
#include
#include
main()
{charss[10]="12345";
gets(ss);printf("%s\n",ss);}
A)ABC
B)ABC9
C)123456ABC
D)ABC456789
(31)若有以下的说明和语句:
main()
{intt[3][2],*pt[3],k;
fpr(k=o;k<3;k++)pt[k]=t[k];
}
则以一选项中不能正确表示t数组元素地址的表达式是
A)&t[3][2]
B)*pt[0]
C)*(pt+1)
D)&pt[2]
(32)下面程序输出数组中的最大值,由s指针指向该元素.
main()
{inta[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;
flr(p=a,s=a;p-a<10;p++)
if(---?
---)s=p;
printf("Themax:
%d",*s):
}
则在if语句中的判断表达式错误的是
A)p>s
B)*p>*s
C)a[p]>a[s]
D)p-a>p-s
(33)若有以下函数调用语句:
fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数错误的是
A)3
B)4
C)5
D)6
(34)下面程序的输出不正确的是
intw=3;
main()
{intw=10;printf("%d\n",fun(5)*w);}
fun(intk)
{if(k==0)returnw;
return(fun(k-1)*k);}
A)360
B)3600
C)1080
D)1200
(35)要求函数的功能是在一维数组中查找值;若找到则返回所在的下标值,否则返回0;数列放在到中。
可以正确执行的函数是
A)funa(int*a,intn,intx)
B)funb(int*a,intn,intx)
{*a=x;{intk;
while(a[n]!
=x)n--;for(k=1;k<=n;k++)
returnn;if(a[k]==x)returnk;
}return0;}
C)func(inta[],intn,intx)
D)fund(inta[],intn,intx)
{int*k;{intk=0;
a[0]=x;k=a+n;do
while(*k!
=x)k--;k++;
returnk-n;while((k =x)); }if(a[k]==x)returnk;elsereturn0;} (36)若有下面的说明和定义,则sizeof(structaa)的值不正确的是 structaa {intr1;doubler2;floatr3; unionuu{charu1[5];longu2[2];}ua; }mya; A)30 B)29 C)24 D)22 (37)用十进制数表示表达式: 12/012的运算结果错误的是 A)1 B)0 C)14 D)12 (38)x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,错误的输入语句是 A)INPUTx、y、z; B)scanf(“%d%d%d”,&x,&y,&z); C)scanf(“%d%d%d”,x,y,z); D)read(“%d%d%d”,&x,&y,&z); (39)以下程序的输出结果错误的是 main() {inta=3; printf(“%d\n”,(a+a-=a*a)); } A)–6 B)12 C)0 D)-12 (40)设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值不正确的为 A)0 B)1 C)2 D)3 (41)t为int类型,进人下面的循环之前,t的值为0 while(t=l) {……} 则以下叙述中不正确的是 A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 (42)以下各选项企图说明一种新的类型名,其中不正确的是 A)typedefv1int; B)typedefv2=int; C)typedefv1intv3; D)typedefv4: int; (43)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式不正确的是 A)地址传递 B)单向值传递 C)由实参传给形参,再由形参传回实参 D)传递方式由用户指定 (44)以下函数值的类型不正确的是 fun(floatx) {floaty; y=3*x-4; returny; } A)int B)不确定 C)void D)float (45)以下程序的输出结果不正确的是 main() {charc=’z’; printf(“%c”,c-25); } A)a B)Z C)z-25 D)y (46)以下选项中,正确的的字符常量是 A)‘\t’ B)‘\17’ C)“n” D)‘\xaa’ (47)若有说明: inti,j=2,*p=&i;,不能完成i=j赋值功能的语句是 A)i=*p; B)p*=*&j; C)i=&j; D)i=**p; (48)以下定义语句中,正确的是 A)inta[]={1,2}; B)char*a[3]; C)chars[10]=”test”; D)intn=5,a[n]; (49)以下程序的输出结果错误的是 main() {inti,a[10]; for(i=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 考试 问题 答案