全国二级计算机C语言程序设计题库及答案1套_第1页
全国二级计算机C语言程序设计题库及答案1套_第2页
全国二级计算机C语言程序设计题库及答案1套_第3页
全国二级计算机C语言程序设计题库及答案1套_第4页
全国二级计算机C语言程序设计题库及答案1套_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全国二级计算机C语言程序设计题库第一部分单选题(50题)1、while循环的语法格式正确的是?()

A.while(条件)语句;

B.while条件语句;

C.while(条件);语句;

D.while(条件){语句}

【答案】:答案解析:while后条件需加括号,语句可是单条(加分号)或代码块(用{}),D缺少分号,故选A。2、数组作为函数参数时,函数形参不能是?()

A.inta[]

B.int*a

C.inta[5]

D.inta

【答案】:答案解析:D中inta是普通变量,不能接收数组名(地址),A、B、C均可作为数组形参,故选D。3、以下if-elseif语句的执行逻辑是?()if(x<0)printf("负");elseif(x==0)printf("零");elseprintf("正");

A.多个条件可同时满足

B.仅执行第一个满足的条件分支

C.所有满足的条件分支都执行

D.无满足条件则不执行

【答案】:答案解析:if-elseif是互斥分支,仅执行第一个满足条件的分支,故选B。4、以下for循环的语法错误是?()

A.for(inti=0;i<5;i++)printf("%d",i);

B.for(i=0;i<5;i++)printf("%d",i);

C.for(;i<5;i++)printf("%d",i);

D.for(i=0;;i++)printf("%d",i);

【答案】:答案解析:B中i未定义(需先声明inti;),A(C99标准允许循环内定义)、C(初始化省略)、D(条件省略,无限循环)语法均正确,故选B。5、以下数组定义中,可省略数组长度的是?()

A.inta[5];

B.inta[]={1,2,3};

C.inta[5]={1,2,3};

D.inta[][3];

【答案】:答案解析:初始化时可省略长度(编译器自动计算),D二维数组第二维不能省略,故选B。6、数组作为函数参数时,函数中修改数组元素会影响主调函数中的数组吗?()

A.会(指针传递)

B.不会(值传递)

C.取决于数组长度

D.不确定

【答案】:答案解析:数组名传参是指针传递,函数中通过指针修改元素会同步到主调函数数组,故选A。7、以下if语句的语法正确的是?()

A.if(x>0){printf("a");elseprintf("b");}

B.if(x>0)printf("a");else{printf("b");}

C.if(x>0)printf("a");elseprintf("b");}

D.if(x>0){printf("a");}elseprintf("b");}

【答案】:答案解析:A缺少},C多},D多},B语法正确(else后{}可加可不加),故选B。8、若inta=5,*p=&a;则&*p的值是?()

A.5

B.&a

C.p

D.无定义

【答案】:答案解析:&*p等价于p,即&a(a的地址),故选B。9、二维数组a[3][4]的元素个数是?()

A.7

B.12

C.3

D.4

【答案】:答案解析:3行4列,共3×4=12个元素,故选B。10、以下定义指向数组的指针正确的是?()

A.inta[5],*p=a;

B.inta[5],*p=&a;

C.inta[5],p=a;

D.inta[5],*p=a[0];

【答案】:答案解析:a是数组名(首元素地址),p=a等价于p=&a[0],B&a是数组地址(类型不匹配),Cp是普通变量,Dp不能赋a[0]的值,故选A。11、以下数组定义错误的是?()

A.inta[5];

B.inta[5]={1,2,3,4,5};

C.inta[5]={1,2,3,4,5,6};

D.inta[]={1,2,3,4,5};

【答案】:答案解析:C初始化元素超5个,编译报错,其余正确,故选C。12、以下switch语句中,case后的常量可以是?()

A.整数

B.字符

C.枚举常量

D.以上都可以

【答案】:答案解析:switch的case后必须是整型常量(整数、字符、枚举常量,字符本质是ASCII码整数),故选D。13、以下函数声明中,返回类型为float的是?()

A.floatfun();

B.voidfun(floata);

C.intfun(floata);

D.charfun(floata);

【答案】:答案解析:A返回类型为float,B无返回值,C返回类型int,D返回类型char,故选A。14、若intx=3,y=5;则表达式x>y?x:y的结果是?()

A.3

B.5

C.true

D.false

【答案】:答案解析:三元运算符格式“条件?值1:值2”,x>y为假,取y=5,故选B。15、指针作为函数返回值时,不能返回?()

A.静态局部变量的地址

B.全局变量的地址

C.动态分配内存的地址

D.局部变量的地址

【答案】:答案解析:局部变量在函数调用结束后释放,返回其地址会导致野指针,故选D。16、以下哪个函数用于读取字符?()

A.putchar()

B.gets()

C.getchar()

D.printf()

【答案】:答案解析:getchar()读取单个字符,puts()输出字符串,gets()读取字符串(已淘汰),故选C。17、若inta=3;执行a+=aa;后a的值是?()

A.12

B.6

C.9

D.15

【答案】:答案解析:优先级先乘后加,a+=aa等价于a=a+(aa)=3+(33)=12,故选A。18、以下关于main函数的说法正确的是?()

A.main函数可无返回值

B.main函数可带参数

C.main函数是程序入口

D.以上都正确

【答案】:答案解析:main函数可声明为void(无返回值),可带argc/argv参数,是程序唯一入口,故选D。19、C语言程序编译的正确顺序是?()

A.预处理→编译→汇编→链接

B.编译→预处理→汇编→链接

C.预处理→汇编→编译→链接

D.链接→编译→汇编→预处理

【答案】:答案解析:C程序编译流程为预处理(处理#命令)→编译(生成汇编代码)→汇编(生成目标文件)→链接(生成可执行文件),故选A。20、以下循环中,循环次数为3次的是?()

A.for(i=1;i<=3;i++)

B.while(i=3)

C.do{i++;}while(i<3);

D.for(i=5;i>0;i--)

【答案】:答案解析:A执行3次(1-3),B是无限循环,C(i初始0)执行3次,D执行5次,题目问“3次”,A明确正确,故选A。21、continue语句只能用于以下哪种结构?()

A.循环语句

B.switch语句

C.if语句

D.所有结构

【答案】:答案解析:continue仅用于循环语句(for/while/do-while),用于跳过本次循环,故选A。22、以下函数调用正确的是?()

A.fun(5);

B.fun(3,4);

C.fun("hello");

D.取决于函数定义

【答案】:答案解析:函数调用需匹配函数定义的参数类型和个数,A、B、C是否正确取决于函数定义,故选D。23、以下关于函数参数的说法正确的是?()

A.形参是局部变量

B.实参是局部变量

C.形参在函数调用后释放

D.实参在函数调用后释放

【答案】:答案解析:形参是函数内局部变量(调用时分配内存,调用结束释放),实参是主调函数中的变量(生命周期与主调函数一致),故选A。24、以下函数返回值类型为int的是?()

A.voidfun(){return;}

B.intfun(){return3.14;}

C.floatfun(){return5;}

D.charfun(){return'a';}

【答案】:答案解析:A返回值类型void(不能return表达式),B返回类型int(3.14强制转为3),C返回类型float,D返回类型char,故选B。25、若inta[5];则数组a的元素个数是?()

A.4

B.5

C.6

D.不确定

【答案】:答案解析:数组a[5]定义5个元素(下标0-4),故选B。26、以下if语句中,逻辑非运算符使用正确的是?()

A.if(!x)printf("yes");

B.if(!x==0)printf("yes");

C.if(!(x>0))printf("yes");

D.A和C

【答案】:答案解析:!x表示“x为假(0)”,!(x>0)表示“x不大于0”,均正确;B中!x==0等价于x!=0,逻辑不同,故选D。27、若inti=3;执行do{printf("%d",i);i--;}while(i>=1);输出结果是?()

A.321

B.123

C.3210

D.无输出

【答案】:答案解析:do-while先执行,i从3减到1,输出321,故选A。28、若floatx=3.14;则表达式(int)x的结果是?()

A.3

B.3.14

C.4

D.0

【答案】:答案解析:强制转换为int取整数部分,3.14→3,故选A。29、若intx=4;执行if(x++>4)printf("A");elseprintf("B");输出结果是?()

A.A

B.B

C.AB

D.无输出

【答案】:答案解析:x++是后置自增,条件判断时x=4,4>4为假,执行else(输出B),后x变为5,故选B。30、若inta[5]={10,20,30,40,50};则a[4]的值是?()

A.40

B.50

C.60

D.无定义

【答案】:答案解析:a[4]是第五个元素,值为50,故选B。31、若inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},(p)[3]=a;则((p+1)+2)的值是?()

A.5

B.6

C.8

D.9

【答案】:答案解析:p是指向3列数组的指针,p+1指向第二行,(p+1)+2指向第二行第三列,值为6,故选B。32、若inta=5,b=3;执行if(a>b){a--;b++;}后a和b的值分别是?()

A.4,4

B.5,3

C.4,3

D.5,4

【答案】:答案解析:a>b为真,执行代码块,a=5-1=4,b=3+1=4,故选A。33、以下for循环中,用于计算1到5的平方和的是?()

A.s=0;for(i=1;i<=5;i++)s+=ii;

B.s=0;for(i=1;i<=5;i++)s+=i2;

C.s=1;for(i=1;i<=5;i++)s*=i;

D.s=0;for(i=1;i<=5;i++)s+=i+i;

【答案】:答案解析:平方和是1²+2²+3²+4²+5²=1+4+9+16+25=55,A的逻辑正确,故选A。34、以下关于void类型函数的说法正确的是?()

A.不能有return语句

B.可以有return语句(无表达式)

C.必须有return语句

D.可返回任意类型

【答案】:答案解析:void函数可写return;(无表达式),用于提前结束函数,不能返回表达式,故选B。35、若inta[4]={1,2,3,4},p=a;执行p++后,*p的值是?()

A.1

B.2

C.3

D.4

【答案】:答案解析:*p++先解引用(值为1),再p自增(指向a[1]),*p=2,故选B。36、若inta[3][4]={{1,2},{3,4,5},{6}};则a[0][1]的值是?()

A.1

B.2

C.3

D.4

【答案】:答案解析:a[0][1]是第一行第二列,值为2,故选B。37、若inta[4]={10,20,30,40};则*(a+2)的值是?()

A.20

B.30

C.40

D.10

【答案】:答案解析:a+2是第三个元素地址,*(a+2)=a[2]=30,故选B。38、以下指针运算错误的是?()

A.inta=5,*p=&a;p++;

B.inta=5,*p=&a;*p++;

C.inta=5,*p=&a;p=&a+1;

D.inta=5,*p=&a;p=p+2;

【答案】:答案解析:&a是地址常量,不能进行算术运算(&a+1错误),A、B、D均正确,故选C。39、以下for循环中,循环变量更新表达式为“i-=2”的是?()

A.for(i=10;i>0;i-=2)

B.for(i=0;i<10;i+=2)

C.for(i=10;i>0;i--)

D.for(i=0;i<10;i=2)

【答案】:答案解析:i-=2等价于i=i-2,A的更新表达式正确,故选A。40、以下函数声明正确的是?()

A.voidfun();

B.voidfun(inta);

C.intfun(int);

D.以上都正确

【答案】:答案解析:函数声明可省略形参名(只留类型),A、B、C均符合语法,故选D。41、若charstr[10];执行strcpy(str,"hello");后str的长度是?()

A.5

B.6

C.10

D.不确定

【答案】:答案解析:strcpy复制字符串"hello"(含\0),长度为5(不含\0),故选A。42、以下switch语句中,default的作用是?()

A.匹配所有case

B.匹配除case外的所有情况

C.终止switch语句

D.无实际作用

【答案】:答案解析:default用于匹配所有case未覆盖的情况,可选且位置灵活,故选B。43、若charstr="abcde";则(str+4)的值是?()

A.'d'

B.'e'

C.'\0'

D.无定义

【答案】:答案解析:str+4指向第5个字符,值为'e',故选B。44、以下字符串数组定义正确的是?()

A.charstr[5][10]={"hello","world"};

B.charstr[5][]={"hello","world"};

C.charstr[][10]={"hello","world","!"};

D.charstr[5][10]={"hello","world","!"};

【答案】:答案解析:B第二维不能省略,A、C、D均正确?D最完整(5行10列,初始化3个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论