C语言程序设计习题解析(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-09 18:23:21

点击下载

作者:薛春艳 郭一晶

出版社:中国铁道出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

C语言程序设计习题解析

C语言程序设计习题解析试读:

前言

PREFACE

本书为配合主教材《C语言程序设计》(薛春艳郭一晶主编)及相应课程教学而编写,同时也是为备考C语言程序设计的需要而精心设计的,目的是通过实际训练,培养学生分析问题、解决问题动手编程的能力,帮助学生系统地掌握该课程,并对学生参加全国计算机等级考试(二级)和水平考试进行指导。

本书内容共分9章,各章内容简介如下。

第1章为C语言的基础知识习题解析。

第2章为C语言的基本数据类型(整型、字符型和浮点型)、常用的运算符(算术运算符、赋值运算符、逗号运算符、位运算符、关系运算符和逻辑运算符)及常用的表达式等的习题解析、习题、习题参考答案。

第3章为程序控制结构中的顺序结构、分支结构和循环结构的习题解析、习题、习题参考答案。

第4章为数组的定义、一维数组、二维数组及字符数组的习题解析、习题、习题参考答案。

第5章为指针概念及指针应用的习题解析、习题、习题参考答案。

第6章为函数定义和调用、函数的嵌套、变量的作用域等的习题解析、习题、习题参考答案。

第7章为结构体、共用体和枚举类型及这些构造类型的习题解析、习题、习题参考答案。

第8章为输入/输出流及文件的读写操作的习题解析、习题、习题参考答案。

第9章为综合试题,给出了多套考试样卷及参考答案。

本书的作者均为多年从事大学程序设计课程教学的教师,具有丰富的教学及程序设计实践经验。本书由薛春艳、郭一晶任主编,高凤强、邱义任副主编。各章的编写分工如下:第1、8章由高凤强编写,第2章由陈炳飞编写,第3章由张思民编写,第4章由郭一晶编写,第5、7章由邱义编写,第6、9章由薛春艳编写。

由于编者水平有限,书中不足之处,敬请广大读者批评指正,以便我们再版时修正。

编者2017年6月第1章C语言基础知识教材习题解析

一、选择题

1.C语言是一种( )。

A.机器语言  B.汇编语言  C.高级语言  D.低级语言【答案】C【解析】

C语言是一种目前比较流行的高级编程语言,它具有较强的生命力。

2.下列叙述错误的是( )。

A.C程序中的每条语句都用一个分号作为结束符

B.C程序中的每条命令都用一个分号作为结束符

C.C程序中的变量必须先定义,后使用

D.C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写【答案】B【解析】

分号是C程序中每条语句的结束符。

3.一个C程序的执行是从( )。

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

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

C.本程序文件的第一个函数开始,到本程序main函数结束

D.本程序的main函数开始,到本程序文件的最后一个函数结束【答案】A【解析】

main函数是C程序的入口函数,并最终从main函数结束。

4.以下叙述不正确的是( )。

A.一个C源程序必须包含一个main函数

B.一个C源程序可由一个或多个函数组成

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

D.在C程序中,注释说明只能位于一条语句的后面【答案】D【解析】

C程序中,注释并没有要求要求一定要放在每个语句的最后。

5.C语言规定:在一个源程序中,main函数的位置( )。

A.必须在程序的开头  B.必须在系统调用的库函数的后面

C.可以在程序的任意位置  D.必须在程序的最后【答案】C【解析】

C程序中,对main函数在程序中的位置作要求,但是main函数不管在什么位置,程序都会从main函数开始执行。

6.一个C语言程序是由( )。

A.一个主程序和若干个子程序组成  B.函数组成

C.若干过程组成  D.若干子程序组成【答案】A【解析】

一个C语言程序,一般都是由一个主程序(main函数)和若干子程序构成,其中子程序不是必需的。

二、编程题

编写一个C语言程序,输出以下信息。【程序分析】

这是一个简单的C语言程序题。该程序只需要调用C编译系统提供的标准函数库中的输出函数printf即可。【源程序】第2章C语言程序设计基础2.1教材习题解析

一、选择题

1、以下自定义的标识符中,合法的是( )。

A.float  B.nit  C.123  D.x+y【答案】B【解析】

C语言的标识符:(1)只能由字符、数字和下画线组成,且第一个字符不能是数字。(2)C语言是一种大小写敏感的语言,所以标识符区分大小写。(3)关键字是被保留的,不能作为标识符来使用。

2.C语言中,要求运算对象只能为整数的运算符是( )。

A.%  B./  C.>  D.*【答案】A【解析】

求余运算符%两侧的操作数均应为整型数据,例如7%4的值为3。

3.要为字符型变量a赋初值,下列语句中哪一个是正确的( )。

A.char a="3";  B.char a='a';  C.char a=%;  D.char a=*;【答案】B【解析】

对字符变量进行赋值有两种方式:第一,将常量字符直接赋值给字符变量时,必须用单引号将常量字符包含起来,如a='a';第二种,直接将常量字符的ASCII码值赋给字符变量,如a=97(常量字符'a'对应的ASCII编码值为97)。

4.已有定义:int a,b;float x,y;,以下正确的赋值语句是:( )。

A.a=1,b=2,  B.y=(x%2)/10;  C.x*=y+8;  D.a+b=x;【答案】C【解析】

选项A不正确,赋值语句必须以分号为分隔符,应改为“a=1;b=1;”。选项B不正确,x是浮点型变量,运算符“%”两侧的操作数必须为整型数据。选项D不是赋值语句。

5.若x、i、j和k都是int型变量,则计算下面表达式后,x的值是( )。

x=(i=4,j=16,k=32)

A.4  B.16  C.32  D.52【答案】C【解析】

先求逗号表达式的值,此逗号表达式共有3个子表达式,表达式1(i=4)的值为4,表达式2(j=16)的值为16,表达式3(k=32)的值为32,逗号表达式的值取表达式3的值,即逗号表达式的值为32,将逗号表达式的值赋给x,所以x的值为32。

6.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是( )。

A.1  B.2  C.2.0  D.2.5【答案】C【解析】

表达式“x=1,y=x+3/2”是一个逗号表达式,它的值取表达式y=x+3/2的值。由于3和2都是整型数据,所以3/2的结果为整数商1,小数部分舍弃,即y=x+1。由于y是浮点型数据,所以结果必为浮点型数据,选项C符合题意。

7.设a为整型变量,不能正确表达数学关系:10

A.10

C.a>10&&a<15  D.!(a<=10)&&!(a>=15)【答案】A【解析】

选项B表明a==11或a==12或a==13或a==14,符合题意。选项C表明a>10并且a<15,符合题意。选项D表明a不小于等于10并且a不大于等于15,符合题意。

8.已知a,b,c为int型变量,若从键盘输入:1,2,3<回车>,使a的值为1,b的值为2,c的值为3,以下选项中正确的输入语句是( )。

A.scanf("%2d,%2d,%2d",a,b,c);  B.scanf("%d,%d,%d",&a,&b,&c);

C.scanf("%d%d%d",&a,&b,&c);  D.scanf("i=%d,j=%d,k=%d",&a,&b,&c);【答案】B【解析】

格式化输入函数scanf()函数的一般形式为:scanf(格式控制字符串,地址表列)。A选项的格式控制字符串不能有限定宽度,且地址列表需加取地址符“&”;B选项符合题意要求;C选项的输入形式为:123<回车>,各数之间用空格隔开;D选项的输入格式为:i=1,j=2,k=3<回车>。

9.设整型变量m,n,a,b,c,d均为1,执行(m=a>b)&&(n=c>d)后,m,n的值是( )。

A.0,0  B.0,1  C.1,0  D.1,1【答案】A【解析】

运算符“>”的优先级比“=”高,所以m=a>b等价于m=(a>b),n=c>d等价于n=(c>d)。表达式a>b和表达式c>d均为“假”,即值均为0。所以执行(m=a>b)&&(n=c>d)等价于执行(m=0)&&(n=0),即m和n的值都为0,故选A。

10.设有语句int a=3;,则执行了语句a+=a-=a*=a;后,变量a的值是( )。

A.3  B.0  C.9  D.-12【答案】B【解析】

从后往前算,a*=a即a=a*a,a=9;然后a-=a=9,a=a-9,a=0;a+=0,a=a+a=0,故选B。

11.以下程序的功能是进行位运算:

程序运行后的输出结果是( )。

A.4 3  B.7 3  C.7 0  D.4 12【答案】A【解析】

a=7^3计算的式子如下:

按位非的运算优先级比按位与高,所以先计算~4。~4对应的二进制计算:~(00000100) =>(11111011) 接着进行按位与22运算,计算的式子如下:

所以,a的值为4,b的值为3。

12.设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是( )。

A.c1^c2  B.c1&c2  C.~c2  D.c1|c2【答案】A【解析】

从定义出发,按位异或运算符“^”的功能是将参与运算的两数对应的两个二进制位进行相异或操作。只要对应的两个二进位同号为0,异号为1,故选A。

二、改错题

1.输出一串字符BOY,代码段如下:

char a="B",b="O",c="Y";

printf("%c%c%c\n",a,b,c);

错误语句为:____________

改正后的语句为:____________【答案】 char a="B",b="O",c="Y";

char a='B',b='O',c='Y';【解析】

对字符变量进行赋值有两种方式:第一,将常量字符直接赋值给字符变量时,必须用单引号将常量字符包含起来,如a='a';第二种,直接将常量字符的ASCII码值赋给字符变量,如a=97(常量字符'a'对应的ASCII编码值为97)。

2.输出3+4的值,程序片断如下:

错误语句为:____________

改正后的语句为:____________【答案】 printf("c=%d");

printf("c=%d",c);【解析】

具体参见printf()函数的用法。

3.有三个变量a,b,c,把它们的值相加并存放在变量sum当中,假设所用变量都是int类型且a,b,c的初值都是2,部分代码段如下:

错误语句为:____________

改正后的语句为:____________【答案】 int a=b=c=2;

int a=2,b=2,c=2;【解析】

一行定义多个变量时,用逗号将它们隔开。

三、填空题

1.已有定义:int x=3;,则表达式:x=x+1.78的值是____________。【答案】4【解析】

x+1.78的值为4.78,因为x是整型数,所以将4赋值给x,小数部分自动去掉。

2.已有定义:int x=10,y=3,z;,则表达式:z=(x%y,x/y)的值是____________。【答案】3【解析】

先算括号里的逗号表达式的值,x%y的值为1,x/y的值为3,所以逗号表达式的值为3,再将逗号表达式的值赋给z,则z的最终结果为3。

3.已有定义语句:int k=3,j=4;,运行表达式(k+=j,j/=4.0,++j,j+2)后,表达式的值是____________,变量k的值是____________,变量j的值是____________。【答案】4 7 2【解析】

K+=j表达式的值为7,k的值为7;j/=4.0表达式的值为1,j的值为1;++j表达式的值为2,j的值为2;表达式j+2的值为4,j的值还是2,所以逗号表达式的最终值为4,k的值为7,j的值为2。

4.C语言中的逻辑值“真”是用____________表示的,逻辑值“假”是用____________表示的。【答案】1 0【解析】

在C语言中规定,逻辑“真”用数值1表示,逻辑“假”用数值“0”来表示。所有非0的数值都表示逻辑“真”,0表示逻辑“假”。

5.求解逗号表达式x=a=3,6*a后,表达式、x、a的值依次为____________。【答案】 18、3、3【解析】

逗号运算符是优先级别最低的运算符,先算表达式x=a=3,则x和a的值都被赋值为3,该表达式的值为3;表达式6*a的值18,所以逗号表达式的最终值为18。

6.写出以下程序运行的结果:____________。【答案】 a b 97 98【解析】

x和y都是字符型变量,x被赋值为字符a,字符a的ASCII值为97,执行y=x+1则y被赋值为字符b,字符b的ASCII值为98。执行printf("%c%c\n",x,y)时,由于%c是以字符串的形式输出,所以输出的是x和y对应的字符;执行printf("%d%d\n",x,y)时,由于%d是以整型数的形式输出,所以输出的是x和y对应字符的ASCII值。

7.写出程序运行的结果:____________。【答案】 9,11,9,10【解析】

执行m=++i时,i的值先自增1变成9在赋值给m,所以此时m和i的值都为9;执行n=j++时,先把j的值赋值给n,此时n的值为10,之后,j的值再自增1为变成11。

8.写出程序运行的结果:____________。【答案】 2,5,3,25【解析】

表达式k++的值为2,k的值也变为2;表达式i=i+j的值为5,i的值为5;表达式i*5的值为25,i的值保持不变。

9.已知int a,b,c;若从键盘输入三个数分别作为变量a、b、c的值,从键盘输入格式要求如下:a=3,b=4,c=5将程序补充完整。【答案】 scanf("a=%d,b=%d,c=%d",&a,&b,&c);【解析】

格式化输入函数scanf()函数的一般形式为:scanf(格式控制字符串,地址表列)。应题目要求输入格式为:a=3,b=4,c=5<回车>,即答案为scanf("a=%d,b=%d,c=%d",&a,&b,&c)

10.输入秒数,显示对应是多少小时、多少分、多少秒。【答案】 minute=seconds%3600/60;

second=seconds%60;【解析】

执行hour=seconds/3600是取出对应的小时数,取出分钟数的表达式为:minute=seconds%3600/60,首先seconds%3600得到的是取完小时数剩余的秒数,接着再除以60就可以得到分钟数;要得到秒数只要进行求余就可以了。

四、编程题

1.从键盘输入两个整数,计算它们的和、差、商和积。【程序分析】 本题主要练习使用printf函数和scanf函数。【源程序】

2.从键盘输入一个字符,输出该字符前后相邻的两个字符。【程序分析】 字符在内存中以ASCII编码值存储,相邻字符之间的ASCII编码值相差1,并且字符数据可以当作整型数据来进行加减运算。【源程序】

3.要将“China”翻译成密码。密码规律是:用原来字母的后面第4个字母代替原来的字母。请编写一程序实现,并输出结果。(Glmre)【程序分析】 字符在内存中以ASCII编码值存储,并且字符数据可以当作整型数据来进行加减运算,所以求一个字符后面的第4个字符即只要在该字符的基础上加上4即可。【源程序】

4.求长方形的周长和面积,长方形的长和宽要求从键盘输入。输入之前,应当给予适当的提示。【程序分析】 可将长方形的长、宽、周长、面积定义为浮点型数据,设长为x,宽为y,周长为l,面积为s。【源程序】

5.有甲、乙两件商品,甲商品的利润率为5%,乙商品的利润率为4%,共可获利46元。价格调整后,甲商品的利润率为4%,乙商品的利润率为5%,共可获利44元,则两件商品的进价分别是多少元?【程序分析】

假设甲商品的进价为:x,乙商品的进价为:y,价格调整之前获利:m ,价格调整之后获利:m 。则可列方程:12【源程序】2.2习题

一、选择题

1.以下可用作用户标识符的是( )。

A.12_a  B.signed  C.t-o  D._if

2.以下正确的实型常量是( )。

A.1.2E  B.0.579899  C.1.2e0.6  D.8

3.有定义语句:int a=5,b;,不能给b赋2的赋值语句是( )。

A.b=a/2;  B.b=b+2;  C.b=2%a;  D.b=5;b=2;

4.若有定义:int a=8,b=5,c;,执行语句:c=a/b+0.4;后,c的值是( )。

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

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

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

6.若变量已正确定义,以下非法的表达式是( )。

A.a/=b+c  B.a%(4.0)  C.a=1/2*(x=y=20,x*3)  D.a=b=c

7.若有说明语句:char c='\x41';则变量c在内存占用的字节数是( )。

A.1  B.2  C.3  D.4

8.表达式!x||a==b等效于( )。

A.!((x||a)==b)  B.!(x||y)==b  C.!(x||(a==b))  D.(!x)||(a==b)

9.要判断char型变量m是否数字字符,可以使用下列表达式( )。

A.0<=m&&m<=9  B."0"<=m&&m<="9"

C.'0'<=m&&m<='9'  D.以上选项都错

10.已知

int a,b,c;

scanf("a=%d,b=%d,c=%d",&a,&b,&c);

若从键盘输入3、4、5三个数分别作为变量a、b、c的值,则正确的输入形式是( )。

A.3,4,5  B.3 4 5

C.a=3,b=4,c=5  D.3↙4↙5(↙代表回车)

11.有以下程序:

执行后输出结果是( )。

A.x=7,y=0  B.x=0,y=7

C.x=1,y=1  D.x=43,y=0

12.整型变量x和y的值相等,且为非0值,则以下选项中,结果为零的表达式是( )。

A.x||y  B.x|y  C.x&y  D.x^y

二、改错题

1.从键盘输入一个正方形的边长,然后求出该正方形的面积,代码段如下:

错误语句为:____________

改正后的语句为:____________

2.取出123的十位数字,进行输出,部分代码如下:

错误语句为:____________

改正后的语句为:____________

3.求一个圆的周长,部分代码段如下:

错误语句为:____________

改正后的语句为:____________

三、填空题

1.若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为____________。

2.判断变量a、b的值均不为0的逻辑表达式为____________。

3.已有定义:int x=0,y=0;,则计算表达式:(x+=2,y=x+3/2,y+5)后,表达式的值是____________,变量x的值是____________,变量y的值是____________。

4.已知int a=5,b=2;则表达式a/b的值是____________。

5.设c='w',a=1,b=2,d=-5,则表达式'x'+1>c,'y'!=c+2,-a-5*b<=d+1,b=a=2的值分别为____________、____________、____________、____________。

6.仔细分析下面程序,该程序的输出结果是:____________。

7.写出以下程序运行的结果:____________。

8.写出以下程序运行的结果:____________。

9.请将程序补充完整,使得程序的输出结果为:Hello。

10.以下程序的功能是将大写字母A转换为小写字母a,将程序补充完整。

四、编程题

1.从键盘分别输入两个复数,计算它们的和、差。

2.将字符'A'变成'a',并输出字符'a'的ASCII编码值。

3.根据圆柱体的底面半径和高,计算它的表面积和体积。底面半径和高从键盘输入,输入时,应当给予适当的提示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载