C语言练习题及答案.docx

上传人:b****8 文档编号:9289633 上传时间:2023-02-04 格式:DOCX 页数:146 大小:89.28KB
下载 相关 举报
C语言练习题及答案.docx_第1页
第1页 / 共146页
C语言练习题及答案.docx_第2页
第2页 / 共146页
C语言练习题及答案.docx_第3页
第3页 / 共146页
C语言练习题及答案.docx_第4页
第4页 / 共146页
C语言练习题及答案.docx_第5页
第5页 / 共146页
点击查看更多>>
下载资源
资源描述

C语言练习题及答案.docx

《C语言练习题及答案.docx》由会员分享,可在线阅读,更多相关《C语言练习题及答案.docx(146页珍藏版)》请在冰豆网上搜索。

C语言练习题及答案.docx

C语言练习题及答案

C语言练习题及答案

选择题

第一章

(1)以下叙述中正确的是_______。

A)c语言比其他语言高级

B)C语言可以不用编译就能被计算机识别执行

c)c语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D)C语言出现的最晚,具有其他语言的一切优点

(1)C

知识点:

c语言风格

评析:

计算机语言分为低级语言、汇编语言和高级语言,c语言属于高级语言,但并不是说c语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项B错误;c语言出现于1972年到1973年问,并不是出现最晚的语言,所以选项D也是错误的。

(2)下列叙述中正确的是______。

A)C语言编译时不检查语法

B)C语言的子程序有过程和函数两种

C)C语言的函数可以嵌套定义

D)C语言中,根据函数能否被其他源文件调用,被区分为内部函数和外部函数

(2)D

知识点:

c语言基本概念

评析:

选项A的错误在于编译过程中是检查语法的,若发现源程序有语法错误,则系统会提示出错信息:

选项B的错误在于C语言中.子程序的作用是dj函数来完成的。

无过程的概念:

选项c的错误在于函数不可以嵌套定义,但可以嵌套调用。

第二章

(1)下面描述中,不符合结构化程序设计风格的是________。

A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑

B)自顶向下

C)注重提高程序的执行效率

D)限制使用goto语句

(1)C

知识点:

结构化程序设计

评析:

结构化程序设计方法的四条原则是:

1.自顶向下:

2.逐步求精;3.模块化;4.限制使用goto语句。

“自顶向下”是说,程序设计时,应先考虑总体,后考虑细节,先考虑全局目标,后考虑局部目标;“逐步求精’’是说,对复杂问题,应设计一些子目标作过渡,逐步细节化;“模块化”是说,一个复杂问题肯定是由若干稍简单的问题构成,解决这个复杂问题的程序,也应对应若干稍简单的问题,分解成若干稍小的部分。

(2)算法一般都可以用_______控制结构组合而成。

A)循环、分支、递归B)顺序、循环、嵌套

c)循环、递归、选择D)顺序、选择、循环

(2)D

知识点:

算法的基本概念

评析:

算法的控制结构给出了算法的基本框架,它不仅决定了算法中各操作的执行顺序,而且也直接反映了算法的设计是否符合结构化原则。

一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。

(3)在计算机中,算法是指_______。

A)查询方法B)加工方法

C)解题方案的准确而完整的描述D)排序方法

(3)C

知识点:

算法的基本概念

评析:

计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:

可行性、确定性、有穷性和拥有足够的情报。

第三章

(1)以下选项中属于C语言的数据类型是_______。

A)复数型B)逻辑型C)双精度型D)集合型

(1)C

知识点:

c语言的数据类型

评析:

c语言的数据类型分为基本类型、构造类型、指针类型、空类型四大类。

其中,基本类型分为整型、字符型、实型三类。

实型又称浮点型,包括单精度型和双精度型两种类型。

(2)在C语言中,不正确的int类型的常数是_______。

A)32768B)0C)037D)0xAF

(2)A

知识点:

int类型的范围

评析:

c语言中int类型的常数的范围是:

-32768~32767。

c整常数可用三种形式表示:

十进制整数,八进制整数,十六进制整数。

选项A超出范围,不正确。

(3)请读程序:

#include

main()

{

inta;

floatb,c;

scanf("%2d%3f%4f",&a,&b,&c);

printf("\na=%d,b=%f,c=%f\n",a,b,c);

}

若运行时从键盘上输入9876543210↙,则上面程序的输出结果是_______。

A)a=98,b=765,c=4321

B)a=10,b=432,c=8765

C)a=98,b=765.000000,c=4321.000000

D)a=98,b=765.0,c=4321.0

(3)C

知识点:

格式输入、输出函数

评析:

scanf()把刚户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,由于“f”是以小数形式输出单、双精度数。

隐含输出6位小数,所以b=4321.000000;把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf()遗弃。

这时变量fd、b、c的值分别为:

98、765.000000、4321.000000。

4)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_______。

A)pb=&x;B)pb=x;C)*pb=&x;D)*pb=*x

(4)A

知识点:

赋值表达式

评析:

选项A是将变量x的地址赋给指钳‘变量pb,使pb指向x,故为正确的赋值表达式。

选项B是将x的值当作地址赋给指针pb,pb指¨一个地址等于x值的内存单元。

选项C足将x的地址赋给指针pb指向的那个地址等于x值的内存单元。

选项D是不正确的语句。

(5)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元

int*p;

p=_______malloc(sizeof(int));

则应填入_______。

A)intB)ira*C)(*int)D)(int*)

(5)D

知识点:

强制类型转换

评析:

不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。

(6)字符(char)型数据在微机内存中的存储形式是________。

A)反码B)补码

C)EBCDIC码D)ASCII码

(6)D

知识点:

字符数据在内存中的存储形式

评析:

将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。

(7)下面程序的输出是________。

main()

{

intx=3,y=6,a=0;

while(x++!

=(y-=1))

{

a+=1;

if(y

break;

}

printf("x:

%d,y:

%d,a=%d\n",x,y,a);

}

A)x=4.v=4,a=1B)x=5,y=5,a=1

C)x=5,y=4,a=3D)x=5,y=4,a=l

(7)D

知识点:

运算符

评析:

注意在x++中x值的引用时,这里应当是先引用,后自加,具体执行过程如下:

第一次while循环:

x=3与y=5比较,条件为真,执行a=a+1=1;此时,x的值己为4,判断y

第二次while循环:

x=4与y=4比较,条件为假,此时x的值已为5,退出while循环,执行printf。

(8)下列语句中符合C语言语法的赋值语句是_______。

A)a=7+b+c=a+7B)a=a+7

C)a=7+b,b++,a+7;D)a=7+b,c。

a+7;

(8)D

知识点:

C表达式类型

评析:

本题的考查点是赋值语句。

c语言中,赋值语句具有其他高级语言的赋值语句的一切特点和功能。

但也有不同:

①c语言中的赋值号“=”是一个运算符,在其他大多数语言中赋值号不是运算符。

②关于“赋值表达式”这一概念,其他大多数高级语言并没有,但在c语言中必须区分:

例如:

i=i+l是一个表达式,而不是语句;i=i+l:

是一个语句。

可以看到,一个表达式的最后加一个分号就成了一个语句。

由于赋值语句是由赋值表达式加分号构成,而赋值表达式是赋值运算符“=”将一个变量和一个表达式连接起来的式子,所以选项A、B均不是合法的赋值语句;选项c中,存在两种运算符:

逗号运算符和赋值运算符,其中赋值运算符的优先级高,逗号表达式“a=7+b,b++,a+7”的值就是表达式“a+7”的值,即选项C也就可以表示为:

a+7;。

由此可见,选项C也不是一个合法的赋值语句。

选项D是用逗号运算符连接的两个赋值语句。

因此符合题目要求的应该是选项D。

(9)C语言提供的合法的数据类型关键字是________。

A)DoubleB)floatC)integerD)Char

(9)B

知识点:

c的数据类型

评析:

本题的考查点是c语言中的关键字。

选项A和D中第一个字母大写,不正确;

选项c是PASCAL中的整型关键字,不是c语言中的关键字。

(10)在c语言中,要求运算数必须是整型的运算符是________。

A)%B)/C)

(10)A

知识点:

位运算符的含义及使用

评析:

本题的考查点是运算符。

题目的四个选项中,(B)(C)(D)都不要求运算数必须为整数,参与模运算(%)的运算数必须是整型数据。

(11)若变量已正确定义并赋值,下面符合c语言的表达式是______。

A)a:

b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b

(11)B

知识点:

表达式类型和求值规则

评析:

选项A和c一望而知其错;对于表达式a=a+7=c+b(答案D),是先执行赋值表达式a+7=c+b,再把这个表达式的值赋给a,显然,表达式a+7=c+b非法,因为赋值表达式的左侧不能为常量或表达式。

(12)若变量a、i已正确定义,且i已正确赋值,合法的语句是______。

A)a==1B)++i;C)a=a++=5;D)a=int(i);

(12)B

知识点:

基本语句中的表达式语句

评析:

选项D显然是错的,而选项A没有分号结束,不是c语句;a++=5(答案c)违反了赋值表达式左侧必须为一个变量(不能是常量或表达式)的规定。

(13)C语言运算对象必须是整型的运算符是______。

A)%B)/C)=D)<。

(13)A

知识点:

运算符及其运算对象

评析:

在c语言中,模运算(即取余运算%)的运算对象必须是整型数据(常量、变量或表达式)。

(14)以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的c语言表达式是______。

A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z

(14)A

知识点:

运算符的优先级

评析:

按照自左向右的运算逻辑,选项A是先做x/y,然后再乘以x,显然与题意不符。

(15)若a为int类型,且其值为3,则执行完表达式a+=a--=a*a后,a的值是______。

A)-3B)9C)-12D)6

(15)C

知识点:

运算符的优先级

评析:

c语言中对赋值运算的运算顺序是自右向左。

本题中,计算a*a之后,a的值依然为3,表达式a*a的值为9;a-=9.a=3-9=-6;a+=-6.a=-6+-6=-12.

(16)若变量c为char类型,能正确判断出c为小写字母的表达式是_______。

A)‘a’<=c<=‘z’B)(c>=‘a')||(c<=‘z’)

C)(‘a’<=c)and(‘z’>=c)D)(c>=‘a’)&&(C<=‘z’)

(16)D

知识点:

变量的灵活应用

评析:

(c>=‘a’)和(c<=‘z’)的关系应该是“与”的关系。

(17)以下合法的赋值语句是______。

A)X=Y=100B)D--;C)X+Y;D)C=int(A+B)

(17)B

知识点:

c语言的赋值语句

评析:

本题中的答案A与D都缺少“;”,而答案c中,表达式是不能独立成为语句的,答案B使用了C语言的自减运算符就相当于D=D-1,所以答案B为赋值语句。

18)设x,y均为.int型变量,且x=10,y=3,则printf("%d,%d\n",x--,--y);语句的输出结果是______。

A)10,3B)9,3C)9,2D)10,2

(18)D

知识点:

c语言的自减运算符

评析:

c语言的自减运算符有前置与后置两种形式。

当自减运算符前置时,变量先自减1后再参与表达式运算:

而后置时,变量先参与表达式运算后再自减1。

(19)以下程序的输出结果是_________。

main()

{inta=3;

printf("%d\n",(a+=a-=a*a));

}

A)-6B)1C)2D)-12

(19)D

知识点:

c语言的赋值运算符

评析:

首先a+=b相当于a=a+b;a-=b相当于a=a-b,且赋值运算符的结合方向是自右至左,所以表达式a+=a-=a*a。

a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a+(6),即a=(-6)+(-6)-12。

(20)以下选项中,非法的字符常量是_______。

A)‘\t’B)‘\17’C)“\n”D)‘\xaa’

(20)C

知识点:

c语言的字符常量与转义字符

评析:

c语言中字符常量足以单引号括起来的单个字符,或为以“\”与三位八进制数值或两位十六进制数值代替单个字符。

(21)若变量a是int类型,并执行了语句:

a=‘A’+1.6;,则正确叙述是______。

A)a的值是字符CB)a的值是浮点型

c)不允许字符型和浮点型相加D)a的值是字符"A"的ASCII值加上l

(21)D

知识点:

C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则

评析:

在赋值表达式中,赋值符右边的值的类型会自动转换成赋值符左边的变量的类型。

在本题中,先用”A”的ASCII码值加上1.46得到66.46,然后将它强制转换成int型,转换后,实数的小数部分全部舍去。

(22)以下选项中不属于C语言的类型的是______。

A)signedshortintB)unsignedchar

C)signedlongD)longshort

(22)D

知识点:

c的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法

评析:

c语言中归纳起来,基本类型数据有以下几种:

[signed]char;

unsignedchar;

[signed]short[int];

unsignedshort[int];

[signed]long[int];

unsignedlong[int];

float;

double.

(23)以下程序的输出结果是______。

main()

{inta=5,b=4,c=6,d;

printf("%d\n",d=a>c?

(a>c?

a:

c):

(b));

}

A)5B)4C)6D)不确定

(23)B

知识点:

C运算符的种类、运算优先级和结合性

评析:

本题最重要的分析d=a>c?

(a>c?

a:

c):

(b)),首先运算括号内的式子a>c?

a:

c,它的值是c的值6,即式子化成d=a>c?

6:

4。

显然a=c,所以将4赋给d。

(24)以下选项中合法的实型常数是_______。

A)5E2.0B)E-3C).2E0D)1.3E

(24)C

知识点:

实型数据的指数表示方式

评析:

以指数形式表示实数时,字母e(或E)之前必须有数字,且e后面的指数必须为整数。

(25)已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是_______。

A)字符AB)字符aC)字符eD)非法的常量

(25)A

知识点:

字符与ASCII码的转换,

评析:

八进制101转换为lO进制即为65,而字母A的ASCII码是65,所以用八进制表示的字符常量‘\101’是A。

(26)设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是______。

A)6.500000B)6C)5.500000D)6.000000

(26)D

知识点:

各类数值型数据的混合运算

评析:

各类数值型数据在进行混合运算时,不同类型的数据要先转换成同一类型,然后进行运算。

转换的规则为:

总是转换为精度更大的数据类型,字符数据转换为整数,short型转为int型,float型数据在运算时转换成双精度型,以提高运算精度

(27)若有以下程序:

main()

{intk=2,i=2,m;

m=(k+=i*=k);

printf("%d,%d\n",m,i);

}

执行后的输出结果是_______。

A)8,6B)8,3C)6,4D)7,4

(27)C

知识点:

复合的赋值运算符

评析:

在赋值符“=”之前加上其他运算符,可以构成复合的运算符。

此运算为右结合性。

即从右往左计算。

i*=k即i=i*k=2*2=4,k=k+i=2+4=6,然后将k的值赋给m。

(28)已有定义:

intx=3,y=4,z=5;,则表达式!

(x+y)+z-l&&y+z/2的值是_______。

A)6B)0C)2D)l

(28)D

知识点:

运算符的优先级

评析:

在本题中,运算符的优先级分别为:

!

>/>+,->&&,即:

!

(3+4)+5-1&&4+5/2=O+5-1&&4+2=4&&6=1。

(29)以下选项中,与k=n++完全等价的表达式是_______。

A)k=n,n=n+1B)n=n+1,k=nC)k=++nD)k+=n+1

(29)A

知识点:

自增及赋值运算

评析:

n++是自增运算,是先使用,然后再使n加l,分开来写即为:

k=n,n=n+l。

(30)若已定义x和y为double类型,则表达式x=l,y--x+3/2的值是______。

A)1B)2C)2.0D)2.5

(30)C

知识点:

表达式的运算

评析:

这是一个逗号表达式,它的值应为表达式y-~x+3/2的值,而前一个表达式已给x赋值l,在没有进行类型转换的情况下,3/2的值为1,所以x+3/2的值应为2.0。

(31)以下有4组用户标识符,其中合法的一组是______。

A)FORB)4dC)f2_G3D)WORD

-subDOIFvoid

CaseSizeabcdefine

(31)C

知识点:

c语言标识符

评析:

c语言的标识符的定义为:

以字母或下划线开头的由字母、数字字符、下划线组成的字符串,而且标识符不能与关键字相同。

(32)请选出可用作C语言用户标识符的一组标识符_______。

A)VoidB)a3_b3C)ForD)2a

define_123_abcDO

WORDIFcasesizeof

(32)B

知识点:

C语言的标识符

评析:

c语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。

选项A中的void和define都和c语言的关键字重名,不合法;

选项C中的case和c语言的关键字重名,不合法;

选项D中的2a是数字打头而且sizeof和c语言的关键字重名,不合法。

(33)下列可用于c语言用户标识符的一组是_______。

A)voiddefineWORDB)a3_b3_123Car

C)For-abcIFCaseD)2aD0sizeof

(33)B

知识点:

c语言的标识符

评析:

c语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,所以排除c和D。

c语言还规定标识符不能为c语言的关键字,从而选项A是错误的,因为void为关键字。

(34)以下各选项企图说明一种新的类型名,其中正确的是______。

A)typedefvlint;B)typedefv2=int;

C)typedefintv3;D)typedefv4:

int

(34)C

知识点:

c语言的类型定义

评析:

c语言中可以使用typedef来重新定义已有的数据类型,相当于为数据类型取个别名。

 

第四章

(1)有以下程序:

#include

main(){

charc[6];

inti=0:

for(;i<6;c[i]=getchar(),i++);

for(i=0;i<6;i++)putchar(c[i]);

printf("\n");

}

如果从键盘上输入:

ab<回车>

c<回车>

def<回车>

则输出结果为________。

A)aB)aC)abD)abcdef

bbc

ccd

dd

e

f

(1)C

知识点:

字符数据的输入、输出

评析:

1.getchar()

此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。

请注意:

getchar()只能接受一个字符(回车符也算是一个字符)。

getchar函数得到的字符可以赋给一个字符变量或整型变量,也可不赋给任何变量,作为表达式的一部分。

2.putchar()

此函数的作用是向终端输出一个字符,也可以输出控制字符,如回车符·使输出的当前位置移到下一行的开头。

本题在输入字符时,ab和c后面的回车符分别赋给了c[2]和c[4],所以,正确答案为C。

(2)以下程序段给数组所有的元素输入数据,请选择正确答案填入:

#include

main()

{

inta[10],i=0;

while(i

:

:

}

A)a+(i++)B)&a[i+l]C]a+iD]&a[++i]

(2)A

知识点:

格式输入函数scanf()

评析:

因为a实际上就是数组a的首地址,而a+x则是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有选项A可以完成给数组所有的元素输入数据的任务。

(3)下面程序的输出是_______。

main()

{intk=ll;

printf("k=%d,k=%o,k=%x\n",k,k,k);

}

A)k=11.k=12,k=llB)k=ll,k=13,k=13

C)k=ll,k=013,k=0xbD)k=ll,k=13,k=B

(3)D

知识点:

格式字符

评析:

在c语言格式字符的输出中,“%d”是以带符号的十进制形式输出整数,即k=ll:

“%o”是以8进制无符号形式输出整数(不输出前导符0),即k=13:

“%x”是以16进制无符号形式输出整数(不输出前导符0x),即k=B。

(4)已知字母A的ASCII码为十进制的65,下面程序

main()

{charchl,ch2;

ch1=‘A’+‘5’-‘3’:

ch2=‘A’+‘6’-‘3’:

printf(“%d,%c\n”,ch1,ch2);

}

的输出是_______。

A)67,DB)B,CC)C,DD)不确定的值

(4)A

知识点:

数据的输入与输出,输入输出函数的调用。

评析:

本题的考查点是格式输出函数printf的格式字符。

由于字符“5”和“3”的ASCII码相差为2。

所以ch1经过运算后的值应为65+2=67;同理,ch2经过运算后的值应为65+3=68,即是字符“D”。

(5)下面程序的输出是________。

main()

{

intm=0xa,n=2;

m+=a;

printf("%X\n",m);

}

A)CB)cC)99D)2

(5)A

知识点:

格式字符

评析:

格式控制符x表示数据按十六进制形式输出(不输出前导符0x)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1