C语言考试问题及答案.docx

上传人:b****3 文档编号:5542393 上传时间:2023-05-08 格式:DOCX 页数:25 大小:24.02KB
下载 相关 举报
C语言考试问题及答案.docx_第1页
第1页 / 共25页
C语言考试问题及答案.docx_第2页
第2页 / 共25页
C语言考试问题及答案.docx_第3页
第3页 / 共25页
C语言考试问题及答案.docx_第4页
第4页 / 共25页
C语言考试问题及答案.docx_第5页
第5页 / 共25页
C语言考试问题及答案.docx_第6页
第6页 / 共25页
C语言考试问题及答案.docx_第7页
第7页 / 共25页
C语言考试问题及答案.docx_第8页
第8页 / 共25页
C语言考试问题及答案.docx_第9页
第9页 / 共25页
C语言考试问题及答案.docx_第10页
第10页 / 共25页
C语言考试问题及答案.docx_第11页
第11页 / 共25页
C语言考试问题及答案.docx_第12页
第12页 / 共25页
C语言考试问题及答案.docx_第13页
第13页 / 共25页
C语言考试问题及答案.docx_第14页
第14页 / 共25页
C语言考试问题及答案.docx_第15页
第15页 / 共25页
C语言考试问题及答案.docx_第16页
第16页 / 共25页
C语言考试问题及答案.docx_第17页
第17页 / 共25页
C语言考试问题及答案.docx_第18页
第18页 / 共25页
C语言考试问题及答案.docx_第19页
第19页 / 共25页
C语言考试问题及答案.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言考试问题及答案.docx

《C语言考试问题及答案.docx》由会员分享,可在线阅读,更多相关《C语言考试问题及答案.docx(25页珍藏版)》请在冰点文库上搜索。

C语言考试问题及答案.docx

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=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2