C语言程序设计实例教程及答案(各地真题)_第1页
C语言程序设计实例教程及答案(各地真题)_第2页
C语言程序设计实例教程及答案(各地真题)_第3页
C语言程序设计实例教程及答案(各地真题)_第4页
C语言程序设计实例教程及答案(各地真题)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计实例教程第一部分单选题(50题)1、以下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。2、若inta=7,*p=&a;执行++*p;后a的值是?()

A.7

B.8

C.&a

D.无定义

【答案】:答案解析:++*p等价于++(*p),先解引用取a的值,再加1(a=8),故选B。3、函数调用的一般格式是?()

A.函数名(实参列表);

B.函数名实参列表;

C.返回类型函数名(实参列表);

D.函数名=实参列表;

【答案】:答案解析:函数调用格式为“函数名(实参列表);”,实参与形参匹配,故选A。4、逻辑表达式!5的结果是?()

A.0

B.1

C.5

D.真

【答案】:答案解析:5为真,!是逻辑非,真变假(0),故选A。5、若charstr[]="Clanguage";则字符串长度是?()

A.10

B.11

C.12

D.13

【答案】:答案解析:字符串长度以\0结束,"Clanguage"含10个字符(不含\0),故选A。6、若floatx=3.14;则表达式(int)x的结果是?()

A.3

B.3.14

C.4

D.0

【答案】:答案解析:强制转换为int取整数部分,3.14→3,故选A。7、若charstr="Clanguage";则(str+2)的值是?()

A.'C'

B.''

C.'l'

D.'a'

【答案】:答案解析:str+2指向第三个字符,值为'l',故选C。8、以下关于main函数的说法错误的是?()

A.程序从main开始执行

B.main函数可带参数

C.main函数必须有返回值

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

【答案】:答案解析:main函数可声明为void(无返回值),C说法错误,A、B、D正确,故选C。9、以下二维数组初始化正确的是?()

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

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

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

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

【答案】:答案解析:A行数超2,B元素不足6个(补0),C标准初始化,D元素超6个,故选C。10、若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。11、以下关于函数的说法正确的是?()

A.函数可提高代码复用性

B.函数可简化程序结构

C.函数可便于维护

D.以上都正确

【答案】:答案解析:函数的核心优势是复用、简化结构、便于维护,故选D。12、以下关于return语句的说法正确的是?()

A.函数中可有多条return语句

B.函数中必须有return语句

C.return语句必须在函数末尾

D.return语句只能返回一个值

【答案】:答案解析:A函数中可有多条return(如条件判断后返回),Bvoid函数可无return,Creturn可在任意位置,Dreturn只能返回一个值(返回多个值需用指针/数组),故选A。13、以下if语句中,条件表达式正确的是?()

A.if(x=5)printf("yes");

B.if(x==5)printf("yes");

C.if(x=5;)printf("yes");

D.if(x==5;)printf("yes");

【答案】:答案解析:if条件需是判断表达式(==),A是赋值,C、D多加分号,故选B。14、指针作为函数参数时,传递的是?()

A.指针的值

B.指针的地址

C.变量的值

D.变量的地址

【答案】:答案解析:指针传参本质是传递变量地址,函数中通过指针可修改实参值,故选D。15、若inta[4]={10,20,30,40};则*(a+2)的值是?()

A.20

B.30

C.40

D.10

【答案】:答案解析:a+2是第三个元素地址,*(a+2)=a[2]=30,故选B。16、以下函数递归调用的例子是?()

A.计算阶乘

B.循环输出数字

C.数组遍历

D.变量交换

【答案】:答案解析:阶乘常用递归实现(n!=n*(n-1)!),B、C、D用循环更高效,故选A。17、若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。18、以下if语句中,赋值语句和判断语句混淆的是?()

A.if(x==5)

B.if(x=5)

C.if(x!=5)

D.if(x>5)

【答案】:答案解析:x=5是赋值(将5赋给x),x==5是判断(x是否等于5),B混淆了两者,故选B。19、若intx=3,y=5;则表达式x>y?x:y的结果是?()

A.3

B.5

C.true

D.false

【答案】:答案解析:三元运算符格式“条件?值1:值2”,x>y为假,取y=5,故选B。20、定义单精度浮点型变量y并赋值2.718的语句是?()

A.doubley=2.718;

B.floaty=2.718f;

C.floaty=2.718;

D.inty=2.718;

【答案】:答案解析:float是单精度,需加f后缀(否则默认double),double是双精度,故选B。21、若inta=2,b=4;执行if(a==b)a=0;elseb=0;后a和b的值分别是?()

A.0,4

B.2,0

C.0,0

D.2,4

【答案】:答案解析:a==b为假,执行else,b=0,a保持2,故选B。22、若inta=7,b=3;执行if(a%b==1)a=0;elseb=0;后a和b的值分别是?()

A.0,3

B.7,0

C.0,0

D.7,3

【答案】:答案解析:7%3=1,条件为真,a=0,b保持3,故选A。23、数组名的本质是?()

A.数组第一个元素的地址

B.数组最后一个元素的地址

C.数组元素的个数

D.数组的大小

【答案】:答案解析:数组名是首元素地址(常量,不可修改),故选A。24、若inta[5]={10,20,30,40,50};则a[2]的值是?()

A.10

B.20

C.30

D.40

【答案】:答案解析:数组下标从0开始,a[2]是第三个元素30,故选C。25、转义字符\0的作用是?()

A.表示空格

B.表示制表符

C.字符串结束标志

D.换行

【答案】:答案解析:\0ASCII码为0,是字符串默认结束标志,不计入长度,故选C。26、若inti=1;执行while(i<=4){printf("%d",i);i+=3;}输出结果是?()

A.14

B.1234

C.1

D.无输出

【答案】:答案解析:i初始1,加3后4,执行2次,输出14,故选A。27、函数定义和函数声明的区别是?()

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

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

C.定义和声明无区别

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

【答案】:答案解析:函数定义是完整实现(含函数体),声明是告诉编译器函数名、参数、返回类型(不含函数体),故选A。28、以下循环中,用于计算1到10的乘积的是?()

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

B.s=1;for(i=1;i<=10;i++)s*=i;

C.s=0;while(i<=10){s*=i;i++;}

D.s=1;do{s+=i;i++;}while(i<=10);

【答案】:答案解析:乘积初始值为1,累加初始值为0,B的逻辑是12...*10,正确,故选B。29、以下数组定义中,可省略数组长度的是?()

A.inta[5];

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

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

D.inta[][3];

【答案】:答案解析:初始化时可省略长度(编译器自动计算),D二维数组第二维不能省略,故选B。30、以下if语句中,赋值表达式作为条件的是?()

A.if(x==3)

B.if(x=3)

C.if(x>3)

D.if(x!=3)

【答案】:答案解析:x=3是赋值表达式,结果为3(非0,真),其余是判断表达式,故选B。31、若intx=0;执行if(x)printf("A");elseprintf("B");输出结果是?()

A.A

B.B

C.AB

D.无输出

【答案】:答案解析:x=0为假,执行else分支,输出B,故选B。32、若inta=10,b=20,*p=&a,q=&b;执行p=q;后p的值是?()

A.10

B.20

C.&a

D.&b

【答案】:答案解析:p=q使p指向b,*p=b=20,故选B。33、若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。34、若inta[3][3]={{1,2},{3,4},{5,6}};则a[1][1]的值是?()

A.2

B.4

C.5

D.6

【答案】:答案解析:a[1][1]是第二行第二列,值为4,故选B。35、以下数组定义错误的是?()

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。36、break语句不能用于以下哪种结构?()

A.for循环

B.while循环

C.do-while循环

D.if语句

【答案】:答案解析:break可用于循环(for/while/do-while)和switch语句,不能用于if语句,故选D。37、以下哪个是合法的字符常量?()

A."a"

B.'ab'

C.'a'

D.a

【答案】:答案解析:字符常量用单引号包裹单个字符,A是字符串,B是两个字符(错误),D是标识符,故选C。38、以下数组定义错误的是?()

A.inta[0];

B.inta[5];

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

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

【答案】:答案解析:数组长度不能为0,编译报错,其余正确,故选A。39、C语言程序的入口函数是?()

A.main()

B.printf()

C.scanf()

D.main

【答案】:答案解析:所有C程序从main()函数开始执行,必须有且仅有一个,故选A。40、若inta[4]={10,20,30,40};则a+1表示?()

A.10的地址

B.20的地址

C.30的地址

D.40的地址

【答案】:答案解析:a是首地址(a[0]=10),a+1是a[1](20)的地址,故选B。41、指针变量的作用是存储?()

A.变量的值

B.变量的地址

C.函数的地址

D.数组的元素

【答案】:答案解析:指针变量专门存储其他变量的内存地址,故选B。42、函数参数传递中,地址传递的特点是?()

A.形参是实参的副本

B.形参修改不影响实参

C.传递的是变量地址

D.用于简单变量传参

【答案】:答案解析:地址传递(指针)传递变量地址,形参通过地址修改实参值,值传递是副本,故选C。43、以下关于数组初始化的说法正确的是?()

A.数组必须初始化

B.数组初始化时元素个数不能少于长度

C.数组初始化时可部分赋值

D.数组初始化后不能修改

【答案】:答案解析:数组可部分赋值(未赋值元素默认0),A数组可不用初始化,B可少于长度,D数组元素可修改,故选C。44、以下函数无返回值的是?()

A.intfun(){return0;}

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

C.floatfun(){return3.14;}

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

【答案】:答案解析:void类型函数无返回值,A、C、D均有返回值,故选B。45、若inta=3;执行if(++a>3)printf("A");elseprintf("B");输出结果是?()

A.A

B.B

C.AB

D.无输出

【答案】:答案解析:++a是前置自增,a变为4>3,条件为真,输出A,故选A。46、以下数组初始化正确的是?()

A.charstr[]="hello";

B.charstr[5]="hello";

C.charstr[]={'h','e','l','l','o'};

D.charstr[5]={'h','e','l','l','o','\0'};

【答案】:答案解析:A字符串自动加\0,B长度5不足以

温馨提示

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

评论

0/150

提交评论