算法与数据结构-C语言描述附答案_第1页
算法与数据结构-C语言描述附答案_第2页
算法与数据结构-C语言描述附答案_第3页
算法与数据结构-C语言描述附答案_第4页
算法与数据结构-C语言描述附答案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

算法与数据结构—C语言描述第一部分单选题(50题)1、以下函数参数为指针的是?()

A.voidfun(int*a){}

B.voidfun(inta){}

C.voidfun(inta[]){}

D.A和C

【答案】:答案解析:A是指针参数,C数组名参数本质是指针,B是值参数,故选D。2、以下函数声明错误的是?()

A.voidfun(int);

B.voidfun(inta);

C.voidfun(inta,intb);

D.voidfun(inta;intb);

【答案】:答案解析:函数声明中参数用逗号分隔,不能用分号,D语法错误,故选D。3、以下哪个函数用于输出字符串?()

A.putchar()

B.printf()

C.gets()

D.scanf()

【答案】:答案解析:printf()可输出字符串(如printf("hello");),putchar()输出单个字符,故选B。4、以下switch语句语法正确的是?()

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

B.switch(x){case1:printf("1");case2:printf("2");break;}

C.switch(x){case1:printf("1");break;default:printf("0");}

D.以上都正确

【答案】:答案解析:switch语句case后可加break(跳出)或不加(穿透),default可选,A、B、C语法均正确,故选D。5、以下哪个操作会导致野指针?()

A.指针未初始化

B.指针指向的内存被释放后未置空

C.指针越界访问

D.以上都是

【答案】:答案解析:野指针是指向无效地址的指针,A、B、C均会导致野指针,故选D。6、break语句在循环中的作用是?()

A.跳过本次循环,继续下一次

B.终止整个循环

C.终止当前语句

D.无作用

【答案】:答案解析:break在循环中用于终止整个循环(跳出循环体),continue是跳过本次循环,故选B。7、以下关于指针的说法正确的是?()

A.指针可用于遍历数组

B.指针可用于字符串操作

C.指针可用于函数参数传递

D.以上都正确

【答案】:答案解析:指针在数组遍历、字符串处理、参数传递中均有核心作用,故选D。8、定义单精度浮点型变量y并赋值2.718的语句是?()

A.doubley=2.718;

B.floaty=2.718f;

C.floaty=2.718;

D.inty=2.718;

【答案】:答案解析:float是单精度,需加f后缀(否则默认double),double是双精度,故选B。9、以下switch语句中,case穿透的情况是?()

A.case后加break

B.case后不加break

C.有default

D.无default

【答案】:答案解析:case后不加break会继续执行下一个case的代码(穿透),加break则跳出,故选B。10、若inta[5]={10,20,30,40,50};则a[4]的值是?()

A.40

B.50

C.60

D.无定义

【答案】:答案解析:a[4]是第五个元素,值为50,故选B。11、若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。12、若intx=10;则表达式x%3的结果是?()

A.1

B.2

C.3

D.0

【答案】:答案解析:%是取余运算符,10除以3商3余1,故选A。13、函数调用时,实参的类型必须与形参的类型?()

A.完全一致

B.兼容(可自动转换)

C.无关

D.实参类型大于形参类型

【答案】:答案解析:实参和形参类型可兼容(如int→float),编译器自动转换,不兼容则编译错误,故选B。14、do-while循环的语法格式正确的是?()

A.do语句;while(条件);

B.do{语句}while(条件)

C.do语句while(条件);

D.do;语句;while(条件);

【答案】:答案解析:do-while格式为“do循环体;while(条件);”,循环体可是单条语句或代码块,B缺少分号,C缺少分号,D循环体为空,故选A。15、以下switch语句中,default的执行时机是?()

A.所有case都不匹配时

B.第一个case不匹配时

C.最后一个case不匹配时

D.任何时候

【答案】:答案解析:default仅在所有case都不匹配时执行,故选A。16、若inti=0;执行for(;i<5;){printf("%d",i);i++;}输出结果是?()

A.01234

B.12345

C.无限循环

D.无输出

【答案】:答案解析:for循环初始化和条件省略,循环体中i自增,执行5次,输出01234,故选A。17、若inti=0,s=0;执行for(i=0;i<4;i++)s+=i;后s的值是?()

A.6

B.10

C.4

D.0

【答案】:答案解析:累加0+1+2+3=6,s=6,故选A。18、若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)。19、递归函数的终止条件是?()

A.函数调用自身

B.函数返回值为0

C.不再调用自身的条件

D.无终止条件

【答案】:答案解析:递归函数必须有终止条件(否则无限递归栈溢出),终止条件是不再调用自身的判断,故选C。20、若charstr="Clanguage";则(str+2)的值是?()

A.'C'

B.''

C.'l'

D.'a'

【答案】:答案解析:str+2指向第三个字符,值为'l',故选C。21、函数嵌套调用是指?()

A.函数调用自身

B.函数调用另一个函数

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

D.多个函数互相调用

【答案】:答案解析:嵌套调用是函数A调用函数B,函数B调用函数C,递归是调用自身,故选B。22、若floatf=5.9;强制转换为整型的表达式是?()

A.int(f)

B.(int)f

C.intf

D.(float)f

【答案】:答案解析:强制类型转换格式为(目标类型)变量,(int)f结果为5(取整数部分),故选B。23、以下定义函数指针正确的是?()

A.int(*fp)(int);

B.int*fp(int);

C.intfp(int);

D.int(fp)[];

【答案】:答案解析:A是指向int返回值、int参数的函数指针,B是返回int的函数,C是普通函数,D是指向数组的指针,故选A。24、指针作为函数参数时,传递的是?()

A.指针的值

B.指针的地址

C.变量的值

D.变量的地址

【答案】:答案解析:指针传参本质是传递变量地址,函数中通过指针可修改实参值,故选D。25、以下for循环的循环变量初始化表达式为“i=5”的是?()

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

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

C.for(i=2;i<=5;i++)

D.for(i=5;i<10;i+=2)

【答案】:答案解析:初始化表达式是for循环第一个部分,B中i=5符合,其余初始化非5,故选B。26、以下数组定义中,正确的是?()

A.inta[5];

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

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

D.以上都是

【答案】:答案解析:A、B、C均符合数组定义规则,故选D。27、若inti=1;执行while(i<=3){printf("%d",i);i++;}输出结果是?()

A.123

B.1234

C.012

D.无输出

【答案】:答案解析:i初始1,满足i<=3,执行3次,输出123,i最终4,循环结束,故选A。28、若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。29、C语言中基本数据类型不包括以下哪项?()

A.char

B.int

C.float

D.array

【答案】:答案解析:基本数据类型为char、int、float、double,array是数组(构造类型),故选D。30、以下循环中,循环次数为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。31、表示“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。32、以下二维数组定义正确的是?()

A.inta[2][3];

B.inta[2][];

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

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

【答案】:答案解析:B第二维不能省略,C第一维可省略(自动计算为2),D初始化元素超6个(2×3=6),A标准定义正确,故选A。33、以下数组定义错误的是?()

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。34、以下指针运算正确的是?()

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

B.inta=10,*p=&a;p=a;

C.inta=10,*p=&a;p=&5;

D.inta=10,*p=&a;*p=&a;

【答案】:答案解析:A指针p自增(指向a的下一个地址),B不能将int值赋给指针,C不能取常量地址,D不能将地址赋给int变量,故选A。35、函数返回值通过______语句返回?()

A.printf

B.scanf

C.return

D.break

【答案】:答案解析:return语句用于函数返回值,printf输出,scanf输入,break跳出循环/switch,故选C。36、C语言程序的基本单位是?()

A.语句

B.函数

C.变量

D.表达式

【答案】:答案解析:C程序由函数构成,main是入口函数,其他函数实现功能,故选B。37、以下关于数组的说法正确的是?()

A.数组下标从1开始

B.数组名可作为左值赋值

C.数组长度定义后不可修改

D.数组元素类型可不同

【答案】:答案解析:数组下标从0开始,数组名是常量(不可赋值),元素类型必须相同,长度定义后固定,故选C。38、若inta=10,*p=&a;则sizeof(p)的值是?()

A.4

B.8

C.取决于系统

D.10

【答案】:答案解析:sizeof(p)是指针大小,32位系统4字节,64位8字节,故选C。39、以下函数无返回值的是?()

A.intfun(){return0;}

B.voidfun(){printf("hello");}

C.floatfun(){return3.14;}

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

【答案】:答案解析:void类型函数无返回值,A、C、D均有返回值,故选B。40、若int*p=(int)malloc(sizeof(int));则p的值是?()

A.0

B.随机值

C.1

D.无定义

【答案】:答案解析:malloc分配的内存未初始化,值为随机值,故选B。41、数组作为函数参数时,函数形参不能是?()

A.inta[]

B.int*a

C.inta[5]

D.inta

【答案】:答案解析:D中inta是普通变量,不能接收数组名(地址),A、B、C均可作为数组形参,故选D。42、逻辑表达式!5的结果是?()

A.0

B.1

C.5

D.真

【答案】:答案解析:5为真,!是逻辑非,真变假(0),故选A。43、以下if-else语句中,代码块执行顺序正确的是?()

A.先执行if条件,满足则执行if代码块,否则执行else代码块

B.先执行else代码块,再执行if条件

C.同时执行if和else代码块

D.仅执行else代码块

【答案】:答案解析:if-else逻辑为“条件判断→满足执行if,否则执行else”,互斥执行,故选A。44、以下定义指向数组的指针正确的是?()

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。45、以下哪个条件表达式表示“x大于等于5且小于

温馨提示

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

评论

0/150

提交评论