期末c语言考试题(名师系列)_第1页
期末c语言考试题(名师系列)_第2页
期末c语言考试题(名师系列)_第3页
期末c语言考试题(名师系列)_第4页
期末c语言考试题(名师系列)_第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、以下数组定义中,正确的是?()

A.inta[5];

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

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

D.以上都是

【答案】:答案解析:A、B、C均符合数组定义规则,故选D。3、以下哪个是C语言中的赋值运算符?()

A.==

B.=

C.+=

D.!=

【答案】:答案解析:=是赋值运算符,==是等于判断,+=是复合赋值,!=是不等于判断,故选B。4、二维数组a[2][3]在内存中存储的顺序是?()

A.a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2]

B.a[0][0],a[1][0],a[0][1],a[1][1],a[0][2],a[1][2]

C.随机顺序

D.按列存储

【答案】:答案解析:二维数组按行优先连续存储,顺序为第一行所有元素,再第二行,故选A。5、若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。6、以下关于指针数组和数组指针的说法正确的是?()

A.指针数组是数组,元素为指针

B.数组指针是指针,指向数组

C.int*arr[5]是指针数组,int(*arr)[5]是数组指针

D.以上都正确

【答案】:答案解析:A、B、C均准确区分了指针数组和数组指针,故选D。7、若intx=2;执行switch(x){case1:printf("a");case2:printf("b");case3:printf("c");}输出结果是?()

A.b

B.bc

C.abc

D.无输出

【答案】:答案解析:x=2匹配case2,无break,穿透到case3,输出bc,故选B。8、执行scanf("%d,%d",&a,&b);时,正确的输入格式是?()

A.23

B.2;3

C.2,3

D.2和3

【答案】:答案解析:scanf格式串中含逗号分隔符,输入需严格对应,故选C。9、若intx=3;执行以下代码后a的值是?()inta;if(x>5)a=10;elseif(x>2)a=20;elsea=30;

A.10

B.20

C.30

D.无定义

【答案】:答案解析:x=3>2,执行第二个分支,a=20,故选B。10、以下关于函数的说法错误的是?()

A.函数可嵌套调用

B.函数可递归调用

C.函数可重定义

D.函数可声明多次

【答案】:答案解析:C函数名不能重定义(重复定义编译报错),A、B、D正确,故选C。11、表达式5>3&&2<4的结果是?()

A.0

B.1

C.真

D.假

【答案】:答案解析:5>3为真(1),2<4为真(1),逻辑与&&结果为1,故选B。12、函数嵌套调用是指?()

A.函数调用自身

B.函数调用另一个函数

C.函数定义中包含另一个函数

D.多个函数互相调用

【答案】:答案解析:嵌套调用是函数A调用函数B,函数B调用函数C,递归是调用自身,故选B。13、若inta=10,*p=&a;则sizeof(p)的值是?()

A.4

B.8

C.取决于系统

D.10

【答案】:答案解析:sizeof(p)是指针大小,32位系统4字节,64位8字节,故选C。14、若floatx=3.14;则表达式(int)x的结果是?()

A.3

B.3.14

C.4

D.0

【答案】:答案解析:强制转换为int取整数部分,3.14→3,故选A。15、以下关于空指针的定义正确的是?()

A.#defineNULL0

B.#defineNULL(void*)0

C.int*p=NULL;

D.以上都正确

【答案】:答案解析:A、B是NULL的常见定义,C是定义空指针,均正确,故选D。16、若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。17、若inta=5,p=&a;则&p的值是?()

A.5

B.&a

C.p

D.无定义

【答案】:答案解析:*&p等价于p,即指针p自身的值(a的地址),故选C。18、函数调用时,实参的顺序必须与形参的顺序?()

A.一致

B.相反

C.无关

D.部分一致

【答案】:答案解析:实参和形参需按顺序一一对应(类型、个数、顺序匹配),否则可能导致逻辑错误,故选A。19、指针与字符串的关系,以下说法正确的是?()

A.字符串常量是字符数组,数组名是指针

B.字符串可通过指针遍历

C.字符指针可指向字符串常量

D.以上都正确

【答案】:答案解析:A、B、C均是指针与字符串的基本关系,故选D。20、若inta[5];执行a[0]=1;a[1]=2;则a[2]的值是?()

A.0

B.3

C.随机值

D.无定义

【答案】:答案解析:全局数组默认0,局部数组未初始化是随机值?题目未说明存储类别,通常默认全局,a[2]=0,故选A。21、若inti=1;执行while(i<=4){printf("%d",i);i+=3;}输出结果是?()

A.14

B.1234

C.1

D.无输出

【答案】:答案解析:i初始1,加3后4,执行2次,输出14,故选A。22、以下关于指针的说法正确的是?()

A.指针可用于实现多返回值函数

B.指针可提高程序效率

C.指针可用于动态内存分配

D.以上都正确

【答案】:答案解析:指针的核心用途包括多返回值、高效访问、动态内存分配,故选D。23、以下字符串数组定义正确的是?()

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个字符串),故选D。24、以下函数参数传递方式中,能修改实参值的是?()

A.值传递

B.地址传递

C.都能

D.都不能

【答案】:答案解析:值传递修改的是形参(副本),不影响实参;地址传递通过指针修改实参值,故选B。25、若inta[5]={1,2,3};则a[3]的值是?()

A.0

B.3

C.随机值

D.无定义

【答案】:答案解析:初始化时未赋值的元素默认为0,a[3]=0,故选A。26、若charstr[]="Clanguage";则字符串长度是?()

A.10

B.11

C.12

D.13

【答案】:答案解析:字符串长度以\0结束,"Clanguage"含10个字符(不含\0),故选A。27、以下switch语句中,default的位置可以在?()

A.所有case之前

B.所有case之后

C.两个case之间

D.以上都可以

【答案】:答案解析:default位置灵活,可在case前、后或中间,不影响执行逻辑,故选D。28、以下哪个是C语言的循环语句?()

A.if

B.for

C.else

D.switch

【答案】:答案解析:C语言循环语句包括for、while、do-while,if/else是选择语句,switch是多分支选择语句,故选B。29、函数参数传递中,值传递适用于?()

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

B.数组,需修改元素

C.指针,需修改实参

D.结构体,需修改成员

【答案】:答案解析:值传递用于简单变量(不修改实参),地址传递用于需修改实参的场景,故选A。30、函数参数为数组时,形参的写法错误的是?()

A.inta[]

B.int*a

C.inta[5]

D.inta

【答案】:答案解析:D中inta是普通变量,不能接收数组名(地址),A、B、C均正确,故选D。31、以下函数定义中,参数为指针的是?()

A.voidfun(int*a){printf("%d",*a);}

B.voidfun(inta){printf("%d",a);}

C.voidfun(inta[]){printf("%d",a[0]);}

D.A和C

【答案】:答案解析:A是指针参数,C数组名参数本质是指针,B是值参数,故选D。32、若inta=4;执行if(a--<4)printf("A");elseprintf("B");输出结果是?()

A.A

B.B

C.AB

D.无输出

【答案】:答案解析:a--是后置自减,条件判断时a=4,4<4为假,执行else(输出B),后a变为3,故选B。33、以下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。34、若inta=8;执行if(a%4==0)a=a/2;elsea=a+2;后a的值是?()

A.4

B.10

C.8

D.6

【答案】:答案解析:8%4=0,条件为真,a=8/2=4,故选A。35、若intx=5;则表达式x+++x的结果是?()

A.10

B.11

C.12

D.9

【答案】:答案解析:结合性从左到右,x+++x等价于(x++)+x=5+6=11,故选B。36、若inti=0;执行while(i<5){i++;if(i==3)continue;printf("%d",i);}输出结果是?()

A.1245

B.12345

C.01245

D.无输出

【答案】:答案解析:i=3时continue,跳过printf,输出1、2、4、5,故选A。37、若inta[3]={1,2,3},p=a;则(p+2)的值是?()

A.1

B.2

C.3

D.无定义

【答案】:答案解析:p+2指向a[2],解引用*(p+2)=a[2]=3,故选C。38、以下指针定义正确的是?()

A.int*p;

B.char*q;

C.float*r;

D.以上都正确

【答案】:答案解析:A指向int,B指向char,C指向float,均符合指针定义语法,故选D。39、若intx=2;执行switch(x){default:printf("0");case1:printf("1");break;case2:printf("2");case3:printf("3");}输出结果是?()

A.01

B.23

C.0123

D.无输出

【答案】:答案解析:x=2匹配case2,无break,穿透到case3,输出23,故选B。40、指针作为函数返回值时,不能返回?()

A.静态局部变量的地址

B.全局变量的地址

C.动态分配内存的地址

D.局部变量的地址

【答案】:答案解析:局部变量在函数调用结束后释放,返回其地址会导致野指针,故选D。41、以下关于main函数的说法错误的是?()

A.程序从main开始执行

B.main函数可带参数

C.main函数必须有返回值

D.main函数可调用其他函数

【答案】:答案解析:main函数可声明为void(无返回值),C说法错误,A、B、D正确,故选C。42、数组作为函数参数时,函数形参不能是?()

A.inta[]

B.int*a

C.inta[5]

D.inta

【答案】:答案解析:D中inta是普通变量,不能接收数组名(地址),A、B、C均可作为数组形参,故选D。43、以下函数调用正确的是?()

A.fun();

B.fun(1,2);

C.fun("test");

D.取决于函数定义

【答案】:答案解析:函数调用是否正确取决于函数定义(参数类型、个数),A、B、C均可能正确,故选D。44、以下函数返回值类型为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。45、函数返回值通过______语句返回?()

A.printf

B.scanf

C.return

D.break

【答案】:答案解析:return语句用于函数返回值,printf输出,scanf输入,break跳出循环/switch,故选C。46、

温馨提示

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

评论

0/150

提交评论