c语言编程期末测试题及完整答案1套_第1页
c语言编程期末测试题及完整答案1套_第2页
c语言编程期末测试题及完整答案1套_第3页
c语言编程期末测试题及完整答案1套_第4页
c语言编程期末测试题及完整答案1套_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

c语言编程期末测试题第一部分单选题(50题)1、若inti=1;执行do{printf("%d",i);i++;}while(i<=0);输出结果是?()

A.1

B.无输出

C.无限循环

D.12

【答案】:答案解析:do-while先执行一次(输出1,i=2),再判断i<=0为假,循环结束,故选A。2、以下哪个是C语言中的赋值运算符?()

A.==

B.=

C.+=

D.!=

【答案】:答案解析:=是赋值运算符,==是等于判断,+=是复合赋值,!=是不等于判断,故选B。3、若inta=5,p=&a;则&p的值是?()

A.5

B.&a

C.p

D.无定义

【答案】:答案解析:*&p等价于p,即指针p自身的值(a的地址),故选C。4、以下函数调用正确的是?()

A.fun(5);

B.fun(3,4);

C.fun("hello");

D.取决于函数定义

【答案】:答案解析:函数调用需匹配函数定义的参数类型和个数,A、B、C是否正确取决于函数定义,故选D。5、指针变量的大小取决于?()

A.指向变量的类型

B.编译器和系统(32位4字节,64位8字节)

C.指针变量的名称

D.变量的值

【答案】:答案解析:指针大小与指向类型无关,取决于系统位数(32位4B,64位8B),故选B。6、以下关于函数的说法正确的是?()

A.函数必须有返回值

B.函数可嵌套定义

C.函数可递归调用

D.函数名可重定义

【答案】:答案解析:A函数可无返回值(void),B不能嵌套定义(可嵌套调用),D函数名不能重定义,C递归调用正确,故选C。7、以下指针与函数的关系正确的是?()

A.函数名是函数的地址

B.函数指针可指向函数

C.可通过函数指针调用函数

D.以上都正确

【答案】:答案解析:A、B、C均是函数与指针的基本关系,故选D。8、函数调用时,实参的顺序必须与形参的顺序?()

A.一致

B.相反

C.无关

D.部分一致

【答案】:答案解析:实参和形参需按顺序一一对应(类型、个数、顺序匹配),否则可能导致逻辑错误,故选A。9、以下数组定义错误的是?()

A.inta[0];

B.inta[5];

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

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

【答案】:答案解析:数组长度不能为0,编译报错,其余正确,故选A。10、若inti=0,s=0;执行while(i<=3){s+=i2;i++;}后s的值是?()

A.12

B.6

C.8

D.10

【答案】:答案解析:累加02+12+22+3*2=0+2+4+6=12,s=12,故选A。11、以下哪个条件表达式表示“x是奇数”?()

A.x%2==0

B.x%2!=0

C.x/2==0

D.x/2!=0

【答案】:答案解析:奇数除以2余数为1,x%2!=0表示奇数,A是偶数,故选B。12、若inta=5;执行if(a>10);elsea=20;后a的值是?()

A.5

B.20

C.10

D.无定义

【答案】:答案解析:if后分号表示空语句,else执行a=20,故选B。13、数组作为函数参数时,函数中修改数组元素会影响主调函数中的数组吗?()

A.会(指针传递)

B.不会(值传递)

C.取决于数组长度

D.不确定

【答案】:答案解析:数组名传参是指针传递,函数中通过指针修改元素会同步到主调函数数组,故选A。14、以下哪个条件表达式表示“x大于等于5且小于等于10”?()

A.5<=x<=10

B.x>=5&&x<=10

C.x>=5||x<=10

D.5<=x&&<=10

【答案】:答案解析:C语言中连续比较不合法,需用逻辑与连接两个判断,A语法错误,C逻辑错误,D语法错误,故选B。15、若intx=10;则表达式x%3的结果是?()

A.1

B.2

C.3

D.0

【答案】:答案解析:%是取余运算符,10除以3商3余1,故选A。16、若inti=0,s=0;执行for(i=1;i<=4;i++)s+=i;后s的值是?()

A.10

B.9

C.8

D.7

【答案】:答案解析:累加1+2+3+4=10,s=10,故选A。17、以下定义指向数组的指针正确的是?()

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。18、若inta=10,p=&a;则p的值是?()

A.10

B.&a

C.p

D.无定义

【答案】:答案解析:*p是解引用,->用于结构体指针访问成员,.用于结构体变量访问成员,故选B。19、表示“x大于5且小于10”的合法C语言表达式是?()

A.5<x<10

B.x>5||x<10

C.x>5&&x<10

D.x>5&x<10

【答案】:答案解析:逻辑与用&&,逻辑或用||,A是连续比较语法错误,&是按位与,故选C。20、函数指针的作用是?()

A.存储函数的地址

B.调用函数

C.实现回调函数

D.以上都正确

【答案】:答案解析:函数指针存储函数地址,可通过指针调用函数,常用于回调函数,故选D。21、以下哪个if语句的条件是“x是偶数且x大于10”?()

A.if(x%2==0&&x>10)

B.if(x%2=0&&x>10)

C.if(x%2==0||x>10)

D.if(x%2=0||x>10)

【答案】:答案解析:偶数判断用x%2==0,逻辑与用&&,B是赋值,C、D是逻辑或,故选A。22、若inta[5]={1,2,3,4,5},p=a;执行p+=2;后p的值是?()

A.2

B.3

C.4

D.5

【答案】:答案解析:p+=2使p指向a[2],*p=3,故选B。23、以下数组定义中,可省略数组长度的是?()

A.inta[5];

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

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

D.inta[][3];

【答案】:答案解析:初始化时可省略长度(编译器自动计算),D二维数组第二维不能省略,故选B。24、函数参数传递中,值传递适用于?()

A.简单变量,无需修改实参

B.数组,需修改元素

C.指针,需修改实参

D.结构体,需修改成员

【答案】:答案解析:值传递用于简单变量(不修改实参),地址传递用于需修改实参的场景,故选A。25、若intx=9;执行以下代码后输出结果是?()if(x>10)printf("A");elseif(x>8)printf("B");elseif(x>6)printf("C");elseprintf("D");

A.A

B.B

C.C

D.

【答案】:答案解析:x=9>8,执行第二个分支,输出B,故选B。26、函数参数传递中,值传递的特点是?()

A.形参修改影响实参

B.形参是实参的副本

C.传递的是变量地址

D.用于数组传参

【答案】:答案解析:值传递时形参是实参的拷贝,修改形参不影响实参,地址传递才影响实参,故选B。27、以下switch语句中,case后的常量可以是?()

A.整数

B.字符

C.枚举常量

D.以上都可以

【答案】:答案解析:switch的case后必须是整型常量(整数、字符、枚举常量,字符本质是ASCII码整数),故选D。28、若inta=7;执行if(a%3==1)printf("A");elseif(a%3==2)printf("B");elseprintf("C");输出结果是?()

A.A

B.B

C.C

D.无输出

【答案】:答案解析:7%3=1?7/3=2余1?不,7%3=1?7-3*2=1,条件1成立?哦7%3=1,应输出A?不对,7%3=1,第一个条件成立,输出A?重新计算:7÷3=2余1,a%3=1,执行第一个分支,输出A,故选A(原解析修正:之前误算,正确结果A)。29、以下if-else语句的语法错误是?()

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

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

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

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

【答案】:答案解析:else后不能直接加分号(否则else无作用),C中else;后printf独立执行,故选C。30、若inti=0;执行while(1){printf("%d",i);i++;if(i==3)break;}输出结果是?()

A.012

B.0123

C.无限循环

D.无输出

【答案】:答案解析:while(1)无限循环,i=3时break,输出012,故选A。31、以下switch语句语法错误的是?()

A.switch(x){case1:printf("1");break;}

B.switch(x){case'a':printf("a");break;}

C.switch(x){case1.5:printf("1.5");break;}

D.switch(x){default:printf("0");}

【答案】:答案解析:case后必须是整型常量,1.5是浮点型,语法错误,故选C。32、若inta=3;执行if(++a>3)printf("A");elseprintf("B");输出结果是?()

A.A

B.B

C.AB

D.无输出

【答案】:答案解析:++a是前置自增,a变为4>3,条件为真,输出A,故选A。33、以下字符串常量定义正确的是?()

A.charstr[]="C";

B.charstr[1]='C';

C.charstr[]={'C'};

D.charstr[2]={'C','\0'};

【答案】:答案解析:A用双引号定义字符串(自动加\0),B单引号用于字符常量,C无\0,D长度2正确但A更简洁,故选A。34、若charstr[10]="abcde";则str[5]的值是?()

A.'e'

B.'\0'

C.随机值

D.无定义

【答案】:答案解析:字符串自动在末尾加\0,str[5]是\0,故选B。35、以下if语句语法正确的是?()

A.if(x>0)printf("yes");

B.ifx>0printf("yes");

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

D.if(x>0){printf("yes")}

【答案】:答案解析:if后条件需加括号,B缺少括号,C分号导致语句结束,D缺少分号,故选A。36、C语言中,注释的正确写法是?()

A.//单行注释

B./*多行注释/

C.--注释

D.A和B

【答案】:答案解析:C语言支持//单行注释和/...*/多行注释,--不是注释符号,故选D。37、do-while循环中,循环体至少执行几次?()

A.0次

B.1次

C.2次

D.不确定

【答案】:答案解析:do-while“先执行后判断”,无论条件是否满足,循环体至少执行一次,故选B。38、do-while循环的特点是?()

A.先判断条件,后执行循环体

B.先执行循环体,后判断条件

C.条件不满足时也不执行循环体

D.只能执行一次

【答案】:答案解析:do-while是“先执行后判断”,至少执行一次循环体,for和while是“先判断后执行”,故选B。39、函数定义在main函数之后时,必须先?()

A.调用函数

B.声明函数

C.定义函数

D.无要求

【答案】:答案解析:main函数调用其他函数时,若函数定义在main之后,需先声明(否则编译器找不到函数),故选B。40、函数定义和函数声明的区别是?()

A.定义包含函数体,声明不包含

B.声明包含函数体,定义不包含

C.定义和声明无区别

D.定义在程序开头,声明在结尾

【答案】:答案解析:函数定义是完整实现(含函数体),声明是告诉编译器函数名、参数、返回类型(不含函数体),故选A。41、continue语句只能用于以下哪种结构?()

A.循环语句

B.switch语句

C.if语句

D.所有结构

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

A.形参是函数定义时的变量

B.实参是函数调用时的变量/常量

C.形参和实参类型需匹配

D.以上都正确

【答案】:答案解析:A、B、C均是函数参数的基本规则,故选D。43、以下函数声明正确的是?()

A.voidfun();

B.voidfun(inta);

C.intfun(int);

D.以上都正确

【答案】:答案解析:函数声明可省略形参名(只留类型),A、B、C均符合语法,故选D。44、以下函数调用正确的是?()

A.fun();

B.fun(1,2);

C.fun("test");

D.取决于函数定义

【答案】:答案解析:函数调用是否正确取决于函数定义(参数类型、个数),A、B、C均可能正确,故选D。45、数组元素的下标从______开始?()

A.0

B.1

C.-1

D.任意

【答案】:答案解析:C语言数组下标从0开始,是固定规则,故选A。46、以下数组初始化中,未赋值元素默认为0的是?()

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

B.charstr[5];

C.inta[5];

D

温馨提示

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

评论

0/150

提交评论