习题解答 2.docx
《习题解答 2.docx》由会员分享,可在线阅读,更多相关《习题解答 2.docx(115页珍藏版)》请在冰点文库上搜索。
习题解答2
《计算机基础与C语言
程序设计(第三版)》习题解答
第1章习题解答
一、选择题
1.一个完整的计算机系统包括_________两大部分。
A)控制器和运算器B)CPU和I/O设备
C)硬件和软件D)操作系统和计算机设备
答案:
C
2.微机硬件系统包括_________。
A)内存储器和外部设备B)显示器、主机箱、键盘
C)主机和外部设备D)主机和打印机
答案:
C
3.计算机软件系统应包括_________。
A)操作系统和语言处理系统B)数据库软件和管理软件
C)程序和数据D)系统软件和应用软件
答案:
D
4.银行的储蓄程序属于_________。
A)表格处理软件B)系统软件
C)应用软件D)文字处理软件
答案:
C
5.系统软件中最重要的是_________。
A)解释程序B)操作系统
C)数据库管理系统D)工具软件
答案:
B
6.计算机能直接执行_________。
A)高级语言编写的源程序B)机器语言程序
C)英语程序D)十进制程序
答案:
B
7.将高级语言翻译成机器语言的方式有_________两种。
A)解释和编译B)文字处理和图形处理
C)图像处理和翻译D)语音处理和文字编辑
答案:
A
8.“程序存储思想”是由_________提出来的。
A)丹尼尔·里奇B)冯·诺依曼C)贝尔D)马丁·理查德
答案:
B
9.(10110110)2+(111101)2=(_________)2。
A)110101B)11110011
C)11001100D)11010111
答案:
B
10.(10010100)2-(100101)2=(_________)2。
A)11110101B)10010011
C)1101111D)1100111
答案:
C
11.(1101)2×(101)2=(_________)2。
A)1000001B)1010011
C)1011100D)1101111
答案:
A
12.(10010)2÷(11)2=(_________)2。
A)1010B)111
C)1100D)110
答案:
D
13.将补码转换为十进制数,即(11110110)补=(_________)10。
A)8B)-9
C)-10D)11
答案:
C
14.已知字符“8”的ASCII码是56,则字符“5”的ASCII码是_________。
A)52B)53
C)54D)55
答案:
B
15.1KB表示_________。
A)1024位B)1000位
C)1000字节D)1024字节
答案:
D
16.指令存储在存储器的_________存储区。
A)程序B)数据C)栈D)堆
答案:
A
二、填空题
1.计算机由5个基本部分组成,分别为:
运算器、控制器、_________和输出设备。
答案:
存储器、输入设备
2.运算器的主要功能是算术运算和_________。
答案:
逻辑运算
3.存储器通常分为内存储器和_________。
答案:
外存储器
4.计算机能直接识别和执行的计算机语言是_________。
答案:
机器语言
5.中央处理器是决定一台微机性能的核心部件,由________组成。
答案:
运算器和控制器
6.(254)10=()2=()8=()16。
答案:
11111110376FE
7.(3.40625)10=()2=()8=()16。
答案:
11.011013.323.68
8.(125)10=()原=()反=()补。
答案:
011111010111110101111101
9.(-25)10=()原=()反=()补。
答案:
100110011110011011100111
10.十进制数3527的8421码的表示为________________。
答案:
0011010100100111
11.已知字符a的ASCII码是97,则字符f的ASCII码是________。
答案:
102
第2章习题解答
一、选择题
1.C语言程序的基本单位是________。
A)函数B)过程
C)子程序D)子例程
答案:
A
分析:
C程序是由一个main函数和若干个(包括零个)其他函数组成,函数是C程序的基本单位。
2.下列叙述中不正确的是________。
A)main函数在C程序中必须有唯一一个
B)C程序的执行从main函数开始,所以main函数必须放在程序最前面
C)函数可以带参数,也可以不带参数
D)每个函数执行时,按函数体中语句的先后次序,依次执行每条语句
答案:
B
分析:
C程序是由函数组成的,函数的排列顺序是任意的。
因此,main函数可以放在其他函数的前面、后面或中间均可。
3.以下叙述中正确的是________。
A)C程序中的注释只能出现在程序的开始位置和语句的后面
B)C程序书写格式严格,要求一行内只能写一个语句
C)C程序书写格式自由,一个语句可以写在多行上
D)用C语言编写的程序只能放在一个程序文件中
答案:
C
分析:
C语言书写格式自由,一个语句可以写在多行上,一行也可以写多个语句。
4.以下叙述中正确的是________。
A)C程序的基本组成单位是语句B)C程序中每一行只能写一条语句
C)简单C语句必须以分号结束D)C语句必须在一行内写完
答案:
C
分析:
分号是C语句的一部分,不能省略。
5.计算机能直接执行的程序是________。
A)源程序B)目标程序C)汇编程序D)可执行程序
答案:
D
二、填空题
1.在一个C源程序中,注释部分两侧分界符分别为________和________。
答案:
/**/
分析:
C程序的注释部分由分界符“/*”和“*/”括起来。
注释部分可以使用任何文字符号等,但分界符不能出现嵌套形式,即在注释内不能再出现分界符,例如“/*……/*……*/……*/”是错误的。
2.一个C语言程序总是从________开始执行。
答案:
main函数
分析:
C程序总是从main函数开始执行,不论它放在何处。
3.C语言可以用来编写________软件,也可用来编写应用软件。
答案:
系统
分析:
C语言既像汇编语言那样允许直接访问物理地址,能进行位运算,能实现汇编语言的大部分功能,直接对硬件访问;也有高级语言的面向用户、容易记忆、容易学习和易于书写的特点。
所以,C语言既可以用来编写系统软件,也可以用来编写应用软件。
4.C语言源程序文件的后缀是________,经过编译后,生成文件的后缀是________,经过连接后,生成文件的后缀是________。
答案:
.c.obj.exe
三、编程题
1.编写程序在屏幕上显示如下信息:
*****************************
MerryChristmas!
HappyNewYear!
*****************************
分析:
利用库函数printf的输出功能可方便地编出程序。
程序如下:
#include
voidmain()
{
printf("*****************************\n");
printf("MerryChristmas!
\n");
printf("HappyNewYear!
\n");
printf("*****************************\n");
}
2.输入a、b后,输出一元一次方程ax+b=0的解。
分析:
方程的解为x=-b/a。
程序如下:
#include
voidmain()
{
floata,b,x;/*定义存放实数的3个变量a、b、c*/
scanf("%f%f",&a,&b);/*输入两个实数,分别赋给a、b*/
x=-b/a;/*求方程的解x*/
printf("x=%f\n",x);/*输出变量x的值*/
}
程序运行结果如下:
56↙
x=-1.200000
3.输入3个数,输出其中最小者。
分析:
可以按例2.3形式编写程序,也可按如下算法编写:
第1步:
输入3个数给a、b、c;
第2步:
将a的值赋给min;
第3步:
如果min>b,则将b的值赋给min;
第4步:
如果min>c,则将c的值赋给min;
第5步:
输出min的值。
注:
第3步可用语句“if(min>b)min=b;”实现。
程序如下:
#include
voidmain()
{
floata,b,c,min;/*定义存放实数的变量a,b,c,min*/
printf("a,b,c=?
\n");/*输出提示信息"a,b,c=?
"*/
scanf("%f%f%f",&a,&b,&c);/*输入3个实数,分别赋给a,b,c*/
min=a;/*将a的值赋给min*/
if(min>b)min=b;/*当min>b时,将b的值赋给min*/
if(min>c)min=c;/*当min>c时,将c的值赋给min*/
printf("min=%f\n",min);/*输出变量min的值*/
}
程序运行结果如下:
a,b,c=?
538↙
min=3.000000
第3章习题解答
一、选择题
1.在一个C程序中________。
A)用户标识符中可以出现下划线和中划线(减号)
B)用户标识符中不可以出现中划线,但可以出现下划线
C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
答案:
B
分析:
C语言中标识符的命名规则如下:
(1)标识符由数字、字母、下划线组成;
(2)标识符的首字符必须为字母或下划线;
(3)标识符不能为C语言的保留字;
(4)C语言中英文字母区分大小写,即A与a表示不同的标识符。
2.以下选项中不合法的标识符是________。
A)printB)FORC)&aD)_00
答案:
C
3.以下选项中不属于C语言类型的是________。
A)signedshortintB)unsignedlongint
C)unsignedintD)longshort
答案:
D
分析:
选项D不是C语言合法的数据类型。
C语言的整型变量可以分为以下6种类型,有符号基本整型[signed]int(方括号表示可省略,即signedint可写为int);无符号基本整型unsignedint;有符号短整型[signed]short[int];无符号短整型unsignedshort[int];有符号长整型[signed]long[int]和无符号长整型unsignedlong[int]。
4.C语言中的基本数据类型包括________。
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、逻辑型、字符型D)整型、实型、逻辑型、字符型
答案:
B
分析:
C语言中没有逻辑型数据,而是用数值0表示“假”,用非0表示“真”。
5.以下关于long、int和short类型数据占用内存大小的叙述中正确的是________。
A)均占4个字节B)根据数据的大小来决定所占内存的字节数
C)由用户自己定义D)由C语言编译系统决定
答案:
D
分析:
C语言并没有规定long、int和short类型数据占用内存大小,而是由编译系统决定。
6.C源程序中不能表示的数制是________。
A)二进制B)八进制C)十进制D)十六进制
答案:
A
分析:
C语言只用十进制、八进制和十六进制。
7.能正确地定义符号常量的是________。
A)#definen=10B)#definen10
C)#definen10;D)#DEFINEN10
答案:
B
分析:
定义符号常量的格式为“#define符号常量名常量”。
符号常量名用标识符命名,常量是C语言合法的常量形式。
注意,在“符号常量名”前后要有空格。
8.以下所列的C语言常量中,错误的是________。
A)0xFFB)l.2e0.5C)2LD)'\n'
答案:
B
分析:
本题选项A中的常量是以0x开头的十六进制数;选项C中的常量是长整型常量;选项D中的常量是一个转义字符常量;选项B中的常量表示形式错误,e的右侧不能为小数,只能是整数。
9.C语言中,char型数据在内存中的存储形式是________。
A)原码B)反码C)补码D)ASCII码
答案:
D
分析:
char型数据在内存中存放的是其ASCII码,而ASCII码都是正整数,正整数的原码、反码和补码都相同。
10.若有定义语句:
charc='\72';则变量c________。
A)包含1个字符B)包含2个字符
C)包含3个字符D)定义不合法
答案:
A
分析:
字符型变量只能存放一个字符,而'\72'是转义字符,表示编码为072(八进制)的字符。
11.不合法的八进制数是________。
A)0B)028C)077D)01
答案:
B
分析:
八进制数由0~7八个数字组成,并且以0开头,没有数字8。
12.以下正确的字符串常量是________。
A)"\\\"B)'abc'C)OlympicGamesD)""
答案:
D
分析:
选项A错,因为转义字符\\表示一个字符\,转义字符\"表示一个字符",所以选项A的右端缺少定界符"。
选项B和C都错,因为字符串必须用双引号括起来。
选项D表示一个空字符串。
13.以下选项中正确的定义语句是________。
A)doublea;b;B)doublea=b=7;C)doublea=7,b=7;D)double,a,b;
答案:
C
分析:
选项A错,a和b应该用逗号分开。
选项B错,应为doublea=7,b=7。
选项D错,double和a之间用空格隔开,不用逗号。
14.设c1、c2为字符型变量,执行语句cl=getchar();c2=getchar();时,从键盘输入A↙,c1和c2的值分别为________。
A)都是'A'B)c1是'A',c2未输入
C)c1未输入,c2是'A'D)c1是'A',c2是'\n'
答案:
D
分析:
函数getchar的功能是从键盘接收一个字符,当输入A↙(↙表示按回车键,即输入换行符'\n')时,第一个字符'A'赋给c1,第二个字符'\n'赋给c2。
15.设c为字符型变量,其值为'A',a为整型变量,其值为97,执行语句putchar(c);putchar(a);后,输出结果为________。
A)AaB)A97C)A9D)aA
答案:
A
分析:
函数putchar(x)的功能是输出一个字符x。
参数x可以是一个字符,也可以是一个整数。
当是整数时,输出以该整数作为ASCII码所对应的字符。
16.a、b是整型变量,执行语句scanf("a=%d,b=%d",&a,&b);使a和b的值分别为1和2,正确的输入是________。
A)12B)1,2C)a=1,b=2D)a=lb=2
答案:
C
分析:
当输入函数scanf的格式字符串中有普通字符时,必须原样输入。
如该例的格式字符串"a=%d,b=%d"中的“a=”、“,b=”是普通字符,要原样输入。
17.若要使用输入语句scanf("%4d%4d%10f",&i,&j,&x);,为i输入-10,为j输入12,为x输入345.67,则正确的输入形式是________。
A)-1012345.67↙B)-1012345.67↙
C)-10001200345.67↙D)-10,12,345.67↙
答案:
B
分析:
选项D是错误的,因为scanf的格式字符串中没有逗号。
由于变量i的输入格式为%4d,即宽度为4,所以从选项A或选项C中读取数据时将获得-101或-100,所以选项A和D都是错的。
选项B是对的,因为B中的3个数由空格分开,而为3个变量所指定的输入格式的宽度都大于对应的数据,宽度不起作用。
18.已知字母A的ASCII码为65,以下语句段的输出结果是________。
charcl='A',c2='Y';printf("%d,%d\n",c1,c2);
A)输出格式非法,输出错误信息B)65,90
C)A,YD)65,89
答案:
D
分析:
由于字符型数据实际是整型数据,即字符的ASCII码。
'A'的ASCII码是65,'B'的ASCII码是65+1,以此类推,'Y'的ASCII码是65+24,即89。
二、填空题
1.在C语言程序中,用关键字________定义基本整型变量,用关键字________定义单精度实型变量,用关键字_________定义双精度实型变量。
答案:
intfloatdouble
2.把a1、a2定义成单精度实型变量,并赋初值1的定义语句是________。
答案:
floata1=1.0,a2=1.0;
分析:
也可以将1.0改为1,因为赋值时,可以进行自动转换。
3.C程序中定义的变量,代表内存中的一个________。
答案:
存储单元
分析:
C程序在编译时,要根据变量的类型给变量分配存储单元,给变量赋值就是将数据存放到变量所代表的存储单元。
4.inti=123;floatx=-45.678;语句printf("i=%5dx=%7.4f\n",i,x);的输出结果是________。
答案:
i=123x=-45.6780
分析:
在格式字符串中的普通字符原样输出;格式说明符%5d表示输出项i的值(123)的宽度为5,左补2个空格;%7.4表示输出项x的值的宽度为7,其中小数位数为4位,整数部分以实际宽度输出。
5.floatalfa=60,pi=3.1415926535626;语句printf("sin(%3.0f*%.4f/180)\n",alfa,pi);的输出结果是________。
答案:
sin(60*3.1416/180)
分析:
printf中的格式字符串中的普通字符原样输出,格式说明符%3.0f表示输出项alfa的值小数部分不输出,%.4f表示输出项pi的值小数部分保留4位,整数部分按实际位数输出。
6.charch='$',floatx=153.4523;语句printf("%c%-8.2f\\n",ch,x);的输出结果是_________。
答案:
$153.45\n
分析:
%c表示对应的输出项ch的值以字符形式输出;%-8.2f表示对应的输出项x的值以小数形式输出,宽度为8,小数点后取2位,负号表示左对齐,右补空格;转义字符\\表示输出一个\,然后输出n。
7.若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:
a=7
b=9
请完成输出语句:
printf("_________",a,b);
答案:
a=%d\nb=%d
8.执行以下程序时输入1234567↙,则输出结果是________。
#include
main()
{inta=1,b;
scanf("%2d%2d",&a,&b);printf("%d%d\n",a,b);
}
答案:
1234
分析:
在输入语句中给a和b指定的输入宽度都是2,所以从输入的数字中依次各取两位分别赋给a和b。
三、编程题
1.输入一个字符,输出该字符及其ASCII码。
分析:
字符型数据在内存中以相应的ASCII码存放,既可以以字符的形式输出,也可以以ASCII码(整数)的形式输出。
程序如下:
#include
voidmain()
{charch;/*定义一个字符型变量ch*/
scanf("%c",&ch);/*给变量ch输入一个字符*/
printf("%c%d\n",ch,ch);
}
程序运行结果如下:
B↙
B66
2.求平面上两点间的距离。
分析:
求两点(x1,y1)、(x2,y2)间的距离公式为
程序如下:
#include
#include/*函数sqrt的头文件*/
voidmain()
{
floatx1,y1,x2,y2,d;
printf("input(x1,y1),(x2,y2):
\n");/*输出提示信息*/
scanf("%f%f%f%f",&x1,&y1,&x2,&y2);
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));/*用函数sqrt求平方根*/
printf("d=%0.2f\n",d);
}
程序运行结果如下:
input(x1,y1),(x2,y2):
1122↙↙
d=1.41
3.已知等差数列的第一项为a,公差为d,求前n项之和,a、d、n由键盘输入。
分析:
等差数列前n项之和为a*n+n*(n-1)*d/2。
程序如下:
#include
voidmain()
{inta,d,n,sum;/*定义4个整型变量*/
printf("inputadn:
\n");/*显示提示信息“inputadn:
”*/
scanf("%d%d%d",&a,&d,&n);/*输入3个整数分别送给a,d,n*/
sum=a*n+n*(n-1)*d/2;/*求等差数列前n项之和*/
printf("sum=%d\n",sum);/*输出结果*/
}
程序运行结果如下:
inputadn:
1350↙↙
sum=3725
第4章习题解答
一、选择题
1.若变量已正确定义并赋值,符合C语言语法的表达式是________。
A)a