C语言测试试题及答案.docx

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

C语言测试试题及答案.docx

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

C语言测试试题及答案.docx

C语言测试试题及答案

 

C语言程序

 

 

第一章C语言程序设计初步

一、主要知识点

(一)程序设计语言的发展

1、机器语言2、汇编语言3、面向过程的语言4、面向对象的程序设计语言

(二)C程序设计语言的执行过程

1、编辑2、编译3、连接4、执行

(三)用库函数组装C程序

例1:

计算2.1715的正弦值。

#include“math.h”

main()

{

floata;/*定义a为实型变量*/

a=sin(2.1715);/*调用sin函数*/

printf(“%f\n”,a);/*调用printf函数,输出a的值*/

}

程序详解:

1、在本例中用到的sin函数称为数学函数,它是为了用户使用方便,由一批厂家开发编写的函数,并不是C语言的一部分。

在使用数学函数时,往往要用到函数执行时所需的一些信息(例如宏定义),这些信息包含在“math.h”中。

因此在程序开头用#include“math.h”将有关的标头文件包括到程序中。

2、一个C语言源程序文件由一个或多个函数组成,C语言的基本组成单位是函数。

一个完整的C语言程序有且只有一个称为主函数的main函数,程序总是从main函数开始执行,调用其它函数后再回到main函数,在main函数中结束整个程序的运行。

3、main是函数名称,没有参数可以不写,但圆括号不能省略,main()后面有一对花括号,花括号内的部分称为函数体,main函数可以在程序的任意位置。

4、C规定每个语句以分号(;)结束,分号是语句不可缺少的组成部分,每行中可以写多条语句。

5、/*与*/之间为注释信息,对程序运行结果不发生影响,也不被编译,注释说明可以放在语句的任意位置。

6、floata;此语句是把a定义为一个实型变量。

7、C语言本身没有输入、输出语句,本例使用prinft函数输出数据。

prinft函数的括号内包括两部分内容:

双引号内的部分、双引号外的部分。

双引号内的部分是“格式字符串”,用于指定输出双引号外的变量的打印格式。

此例中双引号中有一个”%f”,它是输出一个保留小数点后6位数字的格式字符,小数点前的位数不指定。

二、经典例题详解

例2:

一个C程序的执行是从____。

(A)本程序的main函数开始,到main函数结束

(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

(C)本程序的main函数开始,到本程序文件的最后一个函数结束

(D)本程序文件的第一个函数开始,到本程序main函数结束

答案:

C

详解:

一个C语言源程序文件由一个或多个函数组成。

一个完整的C语言程序有且只有一个称为主函数的main函数,程序总是从main函数开始执行,调用其它函数后再回到main函数,在main函数中结束整个程序的运行。

例3、以下叙述不正确的是____。

(A)一个C源程序可由一个或多个函数组成

(B)一个C源程序必须包含一个main函数

(C)C程序的基本组成单位是函数

(D)在C程序中,注释说明只能位于一条语句后面

答案:

D

详解:

/*与*/之间为注释信息,对程序运行结果不发生影响,也不被编译,注释说明可以放在语句的任意位置。

三、习题

(一)选择题

1、以下叙述正确的是____。

(A)在C程序中,main函数必须位于程序的最前面

(B)C程序的每行中只能写一条语句

(C)C语言本身没有输入输出语句

(D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误

2、C语言规定:

在一个源程序中,main函数的位置____。

(A)必须在最开始

(B)必须在系统调用库函数的后面

(C)可以任意

(D)必须在最后

3、一个C语言程序是由____。

(A)一个主程序和若干子程序组成

(B)函数组成

(C)若干过程组成

(D)若干子程序组成

(二)填空题:

1、一个C源程序中至少包括一个________。

2、在一个C源程序中,注释部分两侧的分界符分别为________和________。

第二章数据描述与基本操作

一、主要知识点

(一)C的基本数据类型

整型

基本类型字符型

实型(浮点型)单精度型

枚举类型双精度型

数据类型构造类型

指针类型

空类型

(二)常量和符号常量

1、常量定义:

在程序运行过程中,其值不能被改变的量称为常量。

常量常区分不同的类型,如12、0、-3为整型常量,’a’、’D’为字符常量。

2、符号常量:

用一个标识符代表一个常量的,称为符号常量,即标识符形式的常量。

常量不同于变量,它的值在作用域内不能改变,也不能再被赋值。

例1:

已知商品的单价及数量求商品的总价值。

#definePRICE30

main()

{

intnum,total;

num=10;

total=num*PRICE;

printf(“total=%d”,total);

}

输出结果:

total=300

程序详解:

1、程序中用#define命令行定义PRICE代表常量30,此后凡在此文件中出现的PRICE都代表30,可以和常量一样进行运算。

2、符号常量不同于变量,它的值在其作用域内不能改变,也不能再被赋值。

如再用以下赋值语句给PRICE赋值:

PRICE=40;是错误的。

(三)变量

1、变量定义:

其值可以改变的量称为变量。

2、标识符的命名规范

和其它高级语言一样,用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符,C语言中的标识符命名规范为:

①变量名只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划表。

②C语言中标识符的长度(字符个数)无统一规定,随系统而不同。

许多系统(如IBMPC的MSC)取8个字符,假如程序中出现的变量名长度大于8个字符,则只有前面8个字符有效,后面的不被识别。

③C语言有32个关键字(例如if、else、while)它们已有专门含义,不应用采用与它们同名的变量名。

④C语言将大写字母和小写字母认为是两个不同字。

例2:

在下列符号中,可以选用哪些作变量名?

哪些不可以?

a3B3aB∏+a-b*x$_b5_ifnext_daye_2OK?

IntegerMAXNUMBERi*j

答案:

_b5_a3Bnext_daye_2MAXNUMBER可作变量名,其它的作变量名不可以。

详解:

①MAXNUMBER可作变量名。

习惯上符号常量名用大写,变量名用小写以示区别,但大写字母作变量名并无错误。

②if、integer属于保留字,保留字不可作变量名。

③∏+a-b*x$OK?

i*j不可作变量名,因为变量名只能由字母、数字和下划线三种字符组成。

④3aB不可作变量名,因为变量名的第一个字母必须为字母或下划线。

(四)整型数据

1、整型常量

整型常量即整常数。

C语言整常数可用以下三种表示形式。

①十进制表示。

如231、-56.478

②八进制表示。

以0开头的数是八进制数。

如0123即(123)8=1*82+2*81+3*80=64+16+3=83。

③十六进制表示。

以0x开头的数是16进制。

如0x123即(123)16=1*162+2*161+3*160=256+32+3=291。

2、整型变量

整型变量分为:

基本型、短整型、长整型、和无符号型四种。

①基本型,以int表示

②短整型,以shortint表示或以short表示

③长整型,以longint表示,或以long表示

④无符号型,存储单元中全部二进制位(bit)用作存放数本身,而不包括符号。

无符号型中又分为无符号整型、开符号短整型和无符号长整型,分别以unsignedint、unsignedshort和unsignedlong表示。

3、整型数据的取值范围

C标准没有具体规定各类型所占内存字节数,各种机器处理上有所不同,以IBMPC为例,数的范围如表2.1所示。

表2.1

所占位数

数的范围

Int

16

-32768~32767即-215~(215-1)

short[int]

16

-32768~32767即-215~(215-1)

Long[int]

32

-2147483648~2147483647即-231~(231-1)

Unsigned[int]

16

0~65535即0~(216-1)

Unsignedshort

16

0~65535即0~(216-1)

unsignedlong

32

0~4294967295即0~(232-1)

4、整型常量的分类

①一个整常量,如果其值在-32768~32767范围内,认为它是int型,它可以赋值给int型和longint型变量。

②一个整常量,如果其值超过了上述范围,而在-2147483648~2147483647范围内,则认为它是longint型,可以将它赋值给一个longint型变量。

③如果某一计算机系统的C版本确定的shortint与int型在内存中占据的长度相同,则一个int型的常量出同时一个shortint型常量。

④常量中无unsigned型。

但一个非负值的整常量可以赋值给unsigned型整变量,只要它的范围不超过变量的取值范围即可。

例如:

将50000赋给一个unsignedint型变量是可以的,而将70000赋给它是不行的(溢出)。

⑤在一个整常量后面加一个字母l或L,则认为是longint型常量。

(五)实型数据

1、实型常量

实数在C语言中又称为浮点数。

实数有两种表示形式:

①十进制形式。

它由数字和小数点组成(注意必须有小数点)。

例如:

0.123、.123、123.0、0.0都是十进制数形式。

②指数形式。

如123.56e4或123.56E4都代表123.56*104。

但字母e(或E)之前必须有数字,e后面指数必须为整数。

例如:

e3、2.1e3.5、.e3、e等都不是合法的指数形式。

例3:

下面四个选项中,均是不合法的浮点数的选项是_____。

(A)160.0.12e3(B)1232e4.2.e5

(C)-.18123e40.0(D)-.e3.2341e3

答案:

B

详解:

①160.0.12-.18123e40.0.2341e3是实数的十进制形式或指数形式。

②e32e4.2.e5-.e3不是正确的指数形式。

因为正确的字母e(或E)之前必须有数字,e后面指数必须为整数。

对于数据表示形式.e5以及-.e3,e前的.与-.不是有效的数字表示形式。

③123是整数形式。

2、实型变量

C实型变量分为单精度(float型)和双精度(double型)两类。

在一般系统中,一个单精度型数据在内存中占4个字节(32位),一个double型数据占8个字节。

单精度实数提供7位有效数字,数值的范围随机器系统而异。

在IBMPC中,单精度实数的范围约为10-38~1038,双精度实数的范围约为10-308~10308。

例4:

main()

{floata;

a=111111.666666;

printf(“%f”,a);

}

输出结果:

111111.640621

程序详解:

①一个实型常量不分float型和double型。

一个实型常量可以赋给一个float型或double型变量。

根据变量的类型截取实型常量中相应的有效位数字。

②由于float型变量只能接收7位有效数字,因此在把111111.666666赋给a时,a只接收了111111.6,由于输出函数printf中的%f格式表示输出小数点后的6位小数,所以111111.6后的40621属于无意义数字。

③如果a改为double型,则能全部接收上述12位数字。

(六)字符型数据

1、字符常量:

①普通形式的字符常量:

用引号(即撇号)括起来的一个字符,如’a’、’D’、’$’、’?

’等都是字符常量。

②转义符:

以“\”开头的字符序列。

常用的以“\”开头的特殊字符见表2.2

表2.2

字符形式

功能

\n

换行

\t

横向跳格

\v

竖向跳格

\b

退格

\r

回车

\f

走纸换页

\\

反斜杠字符

\’

单引号字符

\ddd

1到3位8进进制所代表的字符

\xhh

1到2位16进制数所代表的字符

例5:

若有说明语句:

charc=’\729’;则变量c_____。

(A)包含1个字符(B)包含2个字符

(C)包含3个字符(D)说明不合法

答案:

D

详解:

”\”后可以有1到3位8进制所代表的字符,本题中”\”后的”72”属于8进制所代表的字符,而”9”则不属于8进制位所代表的字符,则’\729’中包含了两个字符常量’\72’和’9’。

而字符常量是用引号(即撇号)括起来的一个字符,所以答案为D。

2、字符变量

字符变量是用来存放字符常量。

注意只能存放一个字符。

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

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

例6:

将小写字母转换成大写字母

main()

{charc1;

c1=’a’;

c1=c1-32;

printf(“%c”,c1);

}

输出结果:

A

程序详解:

①’a’的ASCII码为97,所以c1=’a’;语句的功能是把97赋值给了c1。

②c1=c1-32;语句的功能是把97-32的值65赋值给c1。

③printf函数中的%c格式表示以字符方式输出。

ASCII码值为65的字符为A,所以运行结果为:

A

(七)字符串常量

字符常量是用一对双引号括起来的零个或多个字符序列。

C规定以字符’\0’作为字符串结束标志。

所以字符串”a”实际上包含2个字符:

’a’、’\0’,因此,把它赋值给一个字符变量c:

c=”a”

是错误的。

例7:

下面不正确的字符串常量是______。

(A)’abc’(B)”12’12”(C)”0”(D)””

答案:

A

详解:

’abc’是用单引号引来的,所以’abc’不是正确的字符串常量。

(八)算术运算符和算术表达式

1、基本算术运算符

①C语言中有5个基本算术运算符,

+(加法运算符。

如3+5、+3)

-(减法运算符。

如5-2、-3)

*(乘法运算符,如3*5)

/(除法运算符,如5/3,5.0/3)

%(求余运算符,要求%两侧均为整型数据)

例8:

在C语言中,要求运算数必须是整型的运算符是____。

(A)/(B)++(C)!

=(D)%

答案:

D

详解:

对于%运算符来说,要求两侧均为整型数据,所以表达式3.5%2与3%2.0是错误的。

例9:

写出下列程序的输出结果

main()

{printf(“%d,%d\n”,5/3,5%3);

printf(“%d,%d\n”,-5/-3,-5%-3);

printf(“%d,%d\n”,-5/3,-5%3);

printf(“%d,%d\n”,5/-3,5%-3);

}

输出结果:

1,2

1,-2

-1,-2

-1,2

程序详解:

两个同号整数相除时结果为正整数,如5/3、-5/-3的结果值为1。

两个异号整数相除时结果为负整数,多数机器采取“向零取整”法,即-5/-3=-1,5/-3=-1,但如果参加运算的两个数中有一个数为实数时结果为实数。

对于求余(%)运算,运算结果与第一个数的符号相同。

②优先级别:

先*、/、%后+、-

③运算量:

双元运算量,%前后必须为整数。

④左右结合性:

自左至右参预运算。

2、自加自减运算符

①C语言中有4种形式的自加自减运算符:

++i(先使i加1后使用)

i++(先使用后使i加1)

--i(先使i减1后使用)

i--(先使用后使i减1)

②优先级别:

高于算术运算。

例10:

若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为______,n的值为______。

x+=n++

答案:

106

详解:

根据优先级别选运算表达式n++,因为n++是后缀表示形式,所以n先参预运算,再运算表达式x+=n,则x为10,最后n自加为6。

例11:

main()

{intx,y,m,n;

x=2;y=2

m=x++*5;

n=++y*5;

printf(“%d,%d,%d,%d”,x,y,m,n);

}

输出结果:

3,3,10,15

程序详解:

对于后缀来说是先使用后运算,所以m的值为x在自加以前的2*5得10赋值给m后,x自加变为3。

对于前缀来说是先运算后使用,所以m的值为x在自加以后的3*5得15赋值给n。

③运算量:

单元运算量,此运算量必须为变量,所以表达式5++、(x+y)++是错误的。

④左右结合性:

自右至左参预运算。

(九)关系运算

1、C语言提供的关系运算符有:

>(大于)>=(大于或等于)<小于)

<=(小于或等于)==(等于)是!

=(不等于)

2、优先级别:

关系运算符的优先级别低于纯算术类,高于值类。

后两个的优先级小于前四个。

如表达式a+b

3、运算量:

关系运算符是双元运算符,整型、实型、字符都可以参预运算。

4、左右结合性:

从左向右的结合方向

5、关于关系运算符的进一步说明:

①关系表达式的值是整型数0或1,故也可以将其看成一种整型表达式。

例如:

inti=1,j=7,a;

a=i+(j%4!

=0);

a的值为2。

②要说明x在区间[a,b]中,普通数学中使用表达式a≤x≥b。

但C语言中应写成a<=x&&x<=b。

③表达式5>2>7>8在数学上是不允许的,而在C中是允许的。

按自左至右求解。

④字符数据的比较按其ASCII码值进行。

⑤在判定两个浮点数是否相等时,由于存储上的误差,会得出错误的结果。

例如:

1.0/3.0*3.0==1.0

(十)逻辑运算

1、C语言提供的逻辑运算符:

&&(逻辑与)||(逻辑或)!

(逻辑非)

2、优先级别:

&&与||的优先级别低于关系运算符,高于条件运算符,&&的优先级别高于||,!

的优先级别与自加运算符(++)、自减运算符(--)同级。

3、运算量:

&&和||是双元运算符,!

是单元运算符。

例12:

已知x=43,ch=’A’,y=0;则表达(x>=y&&ch<’B’&&!

y)的值是______。

(A)0(B)语法错(C)1(D)“真”

答案:

C

说明:

C语言不提供逻辑性数据“真”和“假”,在进行逻辑运算时则把“非零”作为“真”,把0作为“假”,所以表达式!

y的运算结果是1。

4、左右结合性:

&&和||运算符的结合方向为自左至右,!

的结合方向为自右至左。

5、关于逻辑运算符的进一步说明:

①在一个&&表达式中,若&&的一端为0,则不必再计算另一端,该表达式的值肯定为0。

②在一个||表达式中,若||的一端为0,则不必再计算另一端,该表达式的值肯定为1。

例13:

写出下面程序的输出结果。

main()

{intx,y,z;

x=y=z=0;

++x&&++y||++z;

printf(“%d,%d,%d”,x,y,z);

x=y=z=0;

++x||++y&&++z;

printf(“%d,%d,%d”,x,y,z);

}

输出结果:

1,1,0

1,0,0

程序说明:

①因为&&的优先级别高于||,所以表达式++x&&++y||++z是一个或表达式,根据||的一端为0,则不必再计算另一端的原则,先计算表达式++x&&++y的值为1,因为1或任何值都为1,所以表达式++z没有运算,输出结果为:

1,1,0。

②表达式++x||++y&&++z也是一个或表达式,同样根据||的一端为0,则不必再计算另一端的原则,先计算表达式++z的值为1,因为1或任何值都为1,所以表达式++y&&++z没有运算,输出结果为:

1,0,0。

(十一)赋值运算

1、基本的赋值运算符:

=(将赋值运算符右侧的表达式赋给左侧的变量)

2、自反算术赋值运算符

C语言中有5个基本自反算术赋值运算符,

+=(a+=3等价于a=a+3)

-=(a-=3等价于a=a-3)

*=(a*=3等价于a=a*3)

/=(a*=3等价于a=a*3)

%=(a%=3等价于a=a%3)

3、优先级别:

赋值运算符与自反算术赋值运算符属于同等级别,低于条件运算符,高于逗号运算符。

如对于表达式x%=y+3完全等价于x%=(y+3)。

例14:

若有以下定义,则能使值为3的表达式是______。

Intk=7,x=12;

(A)x%=(k%5)(B)x%=(k-k%5)

(C)x%=k-k%5(D)(x%=k)-(k%=5)

答案:

D

详解:

表达式(x%=k)-(k%=5)完全等价于(x=x%k)-(k=k%5)等价于5-2,此表达式的结果为3。

4、运算量:

双元运算量,赋值运算符与自反算术赋值运算的第一个量必须为变量,且%=前后必须为整型数据。

如对于表达式a*3+=2是错误的。

因为此表达式完全等价于(a*3)=(a*3)+2。

5、左右结合性:

自右至左参预运算。

例15:

若a是int型变量,且a的初值为6,则计算表达式后a的值为______。

a+=a-=a*a

答案:

-60

详解:

表达式从左向右运算,先计算表达式a=a-36后a为-30,再计算表达式a=a+a后a的值变为-60。

(十二)条件运算:

1、条件运算符的基本形式及功能:

条件运算是一种在两个表达式的值中选择一个的操作。

它的一般形式为:

e1?

e2:

e3

它的操作过程为,若e1为真,则表达式的值为e2,若为假表达式的值为e3。

2、优先级别:

低于逻辑运算,高于赋值运算。

3、运算量:

三元运算量,e1一般为算术表达式,e2、e3可以是任意类型的表达式,条件表达式的值的类型为e2与e3二者中类型较高的。

例16:

若有条件表达式(exp)?

a++:

b--,则以下表达式中能完全等价于表达式(exp)的是______。

答案:

exp!

=0

说明:

对于表达式e1?

e2:

e3,e1一般为算术表达式、逻辑表达式、关系表达式,结果为1(真)或0(假)。

也可以为数值exp,结果为结果为非0(真)或0(假)在本例中与exp完全等价的表达式是exp!

=0。

4、左右结合性:

自右至左运算。

例17:

以下程序的运行结果是______。

main()

{intk=4,a=3,b=2,c=1;

printf(“%d”,k

k:

c

c:

a);

}

答案:

1

程序解析:

条件表达式是从右向左运算,所以在本例中先计算表达式c

c:

a的值,把各数值代入此表达式的值为1。

再计算表达式k

k:

1的值,因为k

(十三)逗号运算

1、逗号运算符的基本形式及功能:

逗号表达式的一般形式为:

表达式1,表达式2。

逗号表达式的求解过程是:

先求解表达式1,再求解表达式2。

整个表达式的值是表达式2的值。

2、优先级别:

逗号运算符是所有运算符中级别最低的。

例18:

以下符合C语言语法的赋值表达式是______。

(A)d=9+e+f=d+9(B)d=(9+e,f=d+9)

(C)d=9+e,e++,d+9(D)d=

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

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

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

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