C语言程序设计综合练习题集Word文件下载.docx

上传人:b****6 文档编号:17730541 上传时间:2022-12-08 格式:DOCX 页数:25 大小:83.30KB
下载 相关 举报
C语言程序设计综合练习题集Word文件下载.docx_第1页
第1页 / 共25页
C语言程序设计综合练习题集Word文件下载.docx_第2页
第2页 / 共25页
C语言程序设计综合练习题集Word文件下载.docx_第3页
第3页 / 共25页
C语言程序设计综合练习题集Word文件下载.docx_第4页
第4页 / 共25页
C语言程序设计综合练习题集Word文件下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C语言程序设计综合练习题集Word文件下载.docx

《C语言程序设计综合练习题集Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计综合练习题集Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。

C语言程序设计综合练习题集Word文件下载.docx

完成一定的控制功能,C语言有9种控制语句,分别是if-else、while、continue、

switch、return、for、do-while、break、goto;

表达式语句:

由各类表达式构成,后面加上一个分号,就可以单独作为一条语句出现在一行,多数情况下含赋值运算符。

复合语句:

由一对大括号将一组语句序列括起来形成一个程序段,经常出现在选择或循环语句中。

空语句:

只有一个分号,表示什么也不做。

函数调用语句:

由函数名、圆括号内加实参表和分号组成。

本题中D选项为三条语句,一条控制语句,链条表达式语句。

正确答案为D选项。

10.能将高级语言编写的源程序转换为目标程序的软件是。

A)汇编程序B)编辑程序C)解释程序D)编译程序

11.以下选项中合法的实型常数是。

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

【解析】以指数形式表示实数时,字母e或E之前必须有数字,且e后面指数必须为整数。

12.依据C语言的语法规则,下列合法标识符是A

A)ElseB)elseC)user$2D)5_examp

【解析】标识符的定义有明确的规则:

(1)标识符只能由字母、数字、下划线三者构成;

(2)

标识符的首字符必须是字母或者下划线;

(3)标识符命名对字母大小写敏感;

(4)标识符定

义不能和C语言关键字(KeyWords)相同。

C语言中标识符对大小写敏感,sum和SUM是不同的标识符。

13.以下选项中合法的用户标识是。

A)longB)_2TestC)3DmaxD)A.dat

【解析】选项中A为保留字;

选项C没有以字母或者“_”开头;

选项D中不能有“.”

14.在C语言中,字符型数据在内存中的存储形式是。

A)原码B)补码C)反码D)ASCII码

【解析】数据在内存中是以二进制形式存放的。

数值是以补码表示的。

c的char数据属于基本

类型,在内存中字符的存储实际上是把字符相对应的

ASCII代码放到存储单元中的。

而这些

ASCII代码值在计算机中也是以二进制形式存放的。

这个与整型的存储很相似。

因此这两类之

间的转换也比较方便!

整型:

一个正数的补码和其原码的形式相同。

而负数的补码方式是将其

绝对值的二进制形式“按位求反再加1”实型:

在内存中占4个字节,是按照指数形式存储的,

实型数据分为小数部分和指数部分,分别存放!

计算机用二进制表示小数部分,用2的幕次来

表示指数部分!

15.以下非法的赋值语句是。

A)n=(i=2,++i);

B)j++;

D)x=j>

0;

16.已定义c为字符型变量,则下列正确的赋值语句是。

A)c='

66:

B)c="

66"

;

C)c="

B"

D)c=66;

17.已知小写字母的ASCII码为97,对于inta=99,b='

b:

printf(%c,%d”,a,b);

的结果

是。

A)99,bB)c,98C)99,98D)c,b

【解析】字符类型变量用char来定义,特别要注意字符数据在内存中的存储方式:

字符数据在

内存中是用字符对应的ASCII码存储,其存储形式实质是采用整数形式,由于ASCII码集合中

有256个字符,因此用0~255这个范围内的256个整数分别与每个字符对应。

因此字符型数据和整型数据在一定范围(0~255)内,形式上可以相互引用。

表现在这两种类型的变量能够以对方形式常量来赋值,以对方的形式来输出,还可以同时出现在算数表达式中参与运算

intn='

a:

/*相当于n=97*/

printf("

c=%d,c=%c"

c,c);

/*输出:

n=65,n=A*/

虽然字符型数据和整型数据在一定范围内可以通用,但其外在表现形式并不影响各自的数据类型,上例中n本质上还是整型变量,c本质上还是字符型变量。

18.若变量a和i已正确定义,且i已正确赋值,合法的语句是。

B

A)a=1B)++i;

C)a=a++=5D)a=int(i)

【解析】C语言的语句必须以分号结束,选项A是错误的。

赋值表达式等号的左边只能是变量,而不能是表达式,选项C中含有a++=5,是错误的。

选项D中的强制转换类型必须用圆括号将int括起来,也是不正确的。

19.假定x和y为double型,则表达式x=2,y=x+3/2的值是。

A)3.500000B)3C)2.000000D)3.000000

【解析】算出来结果为3,排除A和C选项;

又因为是double型,所以D选项为正确答案。

20.以下程序的输出结果是。

main()

{

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

printf(“%d\n”,d=a>

b?

(a>

c?

a:

c):

(b));

}

1:

表达式2)可以用来代

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

【解析】本题考察条件表达式。

简单的条件表达式(条件表达式?

表达式

替if语句进行赋值。

详见教材102页。

21.设a=3,b=4,c=-5,则逻辑表达式:

a||b+c&

b==c的值是。

A)1B)0C)非0D)语法错

【解析】运算符优先级由高到底为算术运算符---关系运算符---&

和|卜--赋值运算符。

其中&

||的结合方向为从左到右

22.表示关系x<

=y<

=z的c语言表达式为。

A)(x<

=y)&

(y<

=z)B)(x<

=y)AND(y<

=z)

C)x<

=zD)(x<

(y<

【解析】C语言中没有关键字AND,逻辑与运算符是&

不是AND,因此选项B是错误的;

而&

是C语言的位与运算符,因此选项D是错误的;

选项C是数学表达式,也是错误的。

23.设有变量intx=0,y=1,z=1,则运行表达式:

x=y++>

z--后,x,y,z的值分别是。

A)1,1,1B)1,2,0C)0,1,1D)0,2,0

【解析】注:

前缀是先增值后引用,后缀是先引用再增值

24.已知inta=4,b=5;

执行表达式a=a>

b后,变量a的值为。

A)0B)1C)4D)5

”算术运算符>

关系运算符>

逻辑

”逻辑或“|”赋值运算符>

逗号运算符。

由于关系运算符优先级别高于赋值运算符,所以先执行a>

b,得到结果为假,即0,所以变量a的值为0。

25.能正确表示逻辑关系“a>

10或a<

0”的C语言表达式是。

26.

设有定义inta=3,b=4,c=5;

则以下表达式中,值为0的表达式是

 

27.

A)k=n,n=n+1

B)n=n+1,k=n

C)k=++n

D)k+=n+1

以下合法的赋值语句是

【解析】在本题中,

k=n++为后辍运算,根据其运算规则,应先把n的值赋给k,然后n的值

再加上1,选项A的表达式与本题中的表达式等价。

29.若有定义:

"

inta=8,b=5,c;

”,执行语句“c=a/b+0.4”后,c的值为

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

【解析】由于a,b,c都是整型变量,所以每一步计算都要取整,所以选B。

不同类型数据间是可以进行转换和运算的。

整型、字符型、实型数据可以混合运算,如果表达式内的运算量的类型不同,不同类型的

数据要先转换成同一类型,在进行运算。

转换方向由低到高为:

char/short、int、unsigned、Iong、

但变量本身的类型并未发生变化。

float、double。

当然也可以使用强制类型转换符来转变类型,

例如:

(double)n,(int)(a+b)。

30.设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值是

A)7B)8C)9D)10

31.已定义c为字符型变量,则下列语句中正确的是。

32.已知charch='

A:

且表达式ch=(ch>

='

A'

&

ch<

Z'

)?

(ch+32):

ch的值是。

A)AB)aC)ZD)出错

【解析】考察条件表达式。

见教材102页。

首先执行(ch>

),为1。

接着执行(ch+32)。

因此结果是小写字母a。

33.设有如下程序段:

intx=2,y=3;

%d\n"

(x,y));

则以下叙述中正确的是。

A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出

B)运行时产生出错信息

C)输出值为2

D)输出值为3

34.

)*****

对于循环for(k=16;

k>

k-=3)putchar(‘*'

);

输出是

B)

******C)*******D)无限循环

输出函数)的作用是向终端输出一个字符。

putchar()函数可以输出能在屏幕上显示的字

符,也可以输出控制字符,如

putchar('

\n'

)的作用是输出一个换行符,使输出的当前位置

移到下一行的开头。

35.已知inti=1;

执行语句while(i++<

4)后,变量i的值为。

36.

【解析】此数组共

、、4

3列。

应该是

7

2

5

8

3〔

6

9

【解析】i++是先进行其他运算,运算终了后再将i加1

所以循环中过程如下:

i=0

判断i<

4:

成立

i=i+1,于是i=1

继续循环:

i=i+1,于是i=2

i=i+1,于是i=3

i=i+1,于是i=4

不成立

i=i+1,于是i=5

跳出循环,程序结束

,则定义数组时对第一维的长度

在C语言中如果对全部元素都赋初值(即提供全部初始数据)

可以不指定,但第二维的长度不能省。

系统会根据总个数和第二维的长度算出第一维的长度。

本题中一共有10个元素,每行3列,显然可以确定行数为4.见教材138.

37.判断字符串的长度,应该使用的函数是。

A)strcatB)strcmpC)strcpyD)strlen

【解析】

strlen(string)

---字符串长度

strcpy(字符数组1,字符串2)

---STRingCoPY(字符串复制)的简写。

它是“字符串复制函数”,作用是将字符串2复制到

字符数组1中去。

见教材147页。

strcat(字符数组1,字符数组2)

---(字符串连接)其作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,

结果放在字符数组1中,函数调用后得到一个函数值---字符数组1的地址。

strcmp(string,string)

---比较2个字符串,0为相同,>

0前1个大,<

0后1个大

38.初始化多维数组的语句中,可以默认的是。

A)最后一个下标界B)第1个下标界

C)第2个下标界D)以上都不对

39.若有:

inta[10],*p=&

a[0];

,关于数组名a的不正确的说法是。

A

【解析】一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,

它们都有相应的地址。

指针变量即然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中)。

所谓数组元素的指针就是数组元素的地址。

在本题中,定义a为

包含10个整型数据的数组,定义p为指向整型变量的指针变量。

并且把a[0]元素的地址赋给

指针变量p,也就是使p指向a数组的第0号元素。

C语言规定数组名代表数组中首元素的地址。

因此下面两个语句等价:

P=&

p=a;

注意数组名a不代表整个数组,上述"

p=a;

”的作用是"

把a数组的首元素的地址

赋给指针变量p”而不是“把数组a各元素的值赋给p。

40.设有定义inta[]={1,5,7,9,11,13},*p=a+3;

则*(p-2),*(a+4)的值是。

A)511B)19C)59D)有错误

【解析】因为*p=a+3它的作用是将a数组第4个元素a[3]的地址赋给指针变量p(而不是赋给*p),

a代表数组首元素的地址,a+3代表数组中的第4个元素a[3]。

在数组中的对应关系如下图。

a[]=勺57911代

(p-2)p(a4)

按C语言的规定:

如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个

元素,而不是将p的值(地址)简单的加1。

另外,如果p的初值为&

a[0],则p+i和a+i就是a[i]的地址,或者说,它们指向a数组的第i个

元素,这里需要特别注意的是a代表数组首元素的地址。

*(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。

在本题中*(a+4)=a[4]=11详见教材230页。

41.C语言中,函数返回值的类型是由。

A)return语句中的表达式类型决定

B)调用函数的主调函数类型决定

C)调用函数时的临时类型决定

D)定义函数时所指定的函数类型决定

42.执行下面程序:

intx=1,y=1,z=1;

x=x+++y+++z++;

printf("

%d,%d,%d"

x,++y,z++);

输出的结果为。

A)4,3,2B)3,3,2C)3,3,3D)3,2,2

此语句又可写为

【解析】语句x=x+++y+++z++;

中++运算符均为后缀,所以是先引用后增值,

x=x+y+z;

x++;

y++;

z++;

这样我们便很容易看出结果为x=4;

y=2;

z=2。

43.以下程序段的输出结果是。

intm=10;

while(m>

7)

m__;

printf(“%d\n”,m);

C)9

D)10

A)9B)10

89

78

(1)计算while一对圆括号中表达式的值。

当值为非零时,执行步骤

(2);

当值为零时,执行

步骤(4)。

(2)执行循环体中语句。

(3)转去执行步骤

(1)。

(4)退出while循环。

由以上while循环的一般过程来看,只有当while后面的括号中表达式的值为零时才停止循环。

本题中,当m=7是循环停止,也就是说最后一个输出的应是7.开始m被赋予10,进入循环体,

由于m--;

所以m自减1为9,所以第一个输出的应是9.

44.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)

s=a;

for(b=1;

b<

=c;

b++)s=s+1;

则与上述程序段功能等价的赋值语句是。

A)s=a+b;

B)s=a+c;

C)s=s+c;

D)s=b+c;

【解析】掌握两点:

一、a赋给了s;

二、s执行c次自加;

所以最终相当于将a+c赋给了s。

45.以下程序中,while循环的循环次数是。

inti=0;

while(i<

10)

if(i<

1)continue;

if(i==5)break;

i++;

A)1B)10C)6D)死循环,不能确定次数

【解析】在循环中,如果执行continue,将直接开始下一次循环,不继续执行continue下面的

语句。

进入循环时,i=0,当执行到if(i<

1)continue;

—句时,将执行continue命令,直接开始下一次循环,i的值始终没有变,循环条件(i<

10)将一直满足下去。

所以,程序将一直无法退出循环,即死循环。

46.

A)strcat

B)strcmp

C)strcpy

D)strlen

当对两个字符串进行比较时,应该使用的函数是。

47.若有定义“intk,*q;

”则下列各选项中赋值表达式正确的是。

A)q=(&

k+1)B)q=&

kC)q=kD)*q=&

k

(1)本题的定义语句中,在q前面有一个*号说明符,表示q是一个指针变量,而C

语言规定,在指针变量中只能存放存储单元(即变量)的地址。

(2)因为在定义中,q的基类型为int,所以q中只能存放int类型变量的地址。

(3)在C程序中&

号是求地址符,表达式&

k的值是变量k在内存中的地址,而*号的作用是求地址指向单元的值。

(4)现在来看看选项C和D。

C中,是把整型变量直接赋给指针变量q,由于赋值不兼容性,这是错误的。

D中,企图把k的地址赋给一个整型变量(*p在此可代表一整型变量),这也是不允许的,地址值不可能转换为一个整数。

(5)关于A,还得声明一点,地址符&

只能应用于变量和以后将要介绍的数组元素,不可以用

于表达式,常量或者被说明为register的常量。

因此A也不正确。

(6)那答案只能是B,因为此处q中只能存放int类型的地址,而k是int型,&

k又是k的地址,B当然是正确的。

48.若有以下定义:

chars[20]=“programming”,*ps=s;

则不能代表字符g的表达式

A)ps+3B)s[3]C)ps[3]D)ps+=3,*ps

1、C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来存放该字符串常量。

2、指向数组的指针变量也可以带下标,如p[i]与*(p+i)等价。

详见教材231页。

49.以下能正确定义数组并正确赋初值的语句是。

A)intN=5,b[N][N];

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

C)intc[2][]={{1,2},{3,4}};

D)intd[3][2]={{1,2},{34}};

【解析】如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可

以不指定,但第二维的长度不能省!

详见教材p138

50.假设已定义charc[8]="

test"

inti;

则下面的输出函数调用中错误的是。

A)printf("

%s"

c);

B)for(i=0;

i<

8;

i++)printf("

%c"

c[i]);

C)puts(c)D)for(i=0;

i++)puts(c[i]);

【解析】首先A、B两个选项是没有问题的,puts函数一般形式为puts(字符数组),其作用是

输出字符串,所以D选项是错误的。

51.下程序段:

chars[20]="

xyz"

*sp=s;

strcat(sp,"

12345"

puts(sp);

的输出结果是。

A)xyz12345B)12345xyzC)12345D)xyz

【解析】strcat(字符数组1,字符数组2)---(字符串连接)其作用是连接两个字符数组中的字符

串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值---

字符数组1的地址。

52.在执行inta[][3]={{1,2},{3,4}};

语句后a[1][2]的值是。

A.3

B.4

C.0

D.2

【解析】考查知识点:

二维数组的初始化inta[][3]={{1,2},{3,4}};

初始化的数组元素如下:

°

'

I

4

【解析】此数组共3列。

「°

在C语言中如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。

本题中一共有1°

个元素,每行3列,显然可以确定行数为4.见教材138.

54.设有定义语句:

charstr[][2°

]={"

Hello"

"

Beijing"

},*p=str;

则printf("

strlen(p+2°

));

输出结果是。

A)°

B)5C)7D)2°

【解析】数组charstr[][2°

]实际上是一个2行2°

列的字符数组。

*p正好指向H,—个英文字母占一个字节,这样p+2°

就指向第二行的第一列,也就是"

Beijing"

的B,所以输出结果是7。

注意:

虽然第一行,第二行都没有排满,但Hello其后是°

而不是空格。

55.用数组名作为函数调用时的实参,则实际传

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

当前位置:首页 > 初中教育 > 语文

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

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