完整word版C语言课后习题答案最终.docx
- 文档编号:9252209
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:82
- 大小:55.54KB
完整word版C语言课后习题答案最终.docx
《完整word版C语言课后习题答案最终.docx》由会员分享,可在线阅读,更多相关《完整word版C语言课后习题答案最终.docx(82页珍藏版)》请在冰豆网上搜索。
完整word版C语言课后习题答案最终
第0章习题
1.将下列十进制数分别转化为二进制数、八进制数和十六进制数:
(1)128
(2)511(3)1024(4)65535(5)1048575
答:
(1)10000000、200、80
(2)111111111、777、1FF
(3)10000000000、2000、400
(4)111111*********1、177777、FFFF
(5)111111*********11111、3777777、FFFFF
2.将下列二进制数转化为十进制数和十六进制数:
(1)1100110101B
(2)101101.1011B
答:
(1)821、335
(2)45.6875、2D.B
3。
写出下列数的原码、反码、补码:
15、-20、—27/32
答:
(1)00001111、00000000、00001111
(2)10010100、11101011、11101100
(3)1。
1101100、1。
0010011、1.0010100
4.16位无符号定点整数的数值表示范围为多少?
8位补码的表示范围是多少?
16位补码的表示范围是多少?
答:
0~65535、—128~127、—32768~32767
5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?
简要回答结构化程序设计的经典定义.
答:
结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。
如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
6.C程序在内存中存储在哪儿?
计算机的内存空间是如何分区的?
分区存放不同类型的数据的目的是什么?
答:
C语言程序属于应用程序,程序代码本身存放在应用程序区,程序运行时处理的数据存放在应用程序数据区。
计算机的内存空间主要分为3个区:
系统程序区、应用程序区和数据区,其中数据区又分为系统程序数据区和应用程序数据区两类。
系统程序区主要存放操作系统程序,计算机开机启动时,主要从该区取出程序分析执行;应用程序区主要存放应用程序设计者编制的应用程序;数据区则作为上述两类程序运行时的变量和中间结果的存放空间。
程序运行时所需要的不同存储属性的变量将分别分配在这几个数据区和寄存器区。
寄存器区在CPU内部,而不在存储器中,所以C语言寄存器型变量的运算速度最快,但是在CPU内部,寄存器非常有限,一般只有几个到几十个,所以C程序的寄存器型变量实际只有几个。
7.简要回答冯。
诺依曼计算机的基本原理。
答:
计算机硬件系统的核心是由中央处理器(CPU)和可执行的主存组成的计算引擎。
这里,主存存储程序(可执行的机器指令序列)和数据,是可以直接寻址单元的线性序列.除主存外,计算机系统还有辅存即辅助存储器,用来保存当前没有载入主存的、部分或临时载入的程序和数据(例如硬盘)。
同时,计算机系统还需要从外界获取数据或者将处理后的数据通知外界,这就需要另外一个组件即一组通信设备(例如显示器、键盘等),使用它们可以在用户和计算机之间以及计算机和计算机之间进行数据和命令交换.
8.规范化编程的作用是什么?
规范化编程主要包括哪几方面的内容?
根据你的认识说一说什么样的程序才是具有规范化编码风格的程序.
答:
规范化编程的作用就是使代码容易阅读,无论是对程序员本人,还是对其他人。
风格良好的代码更容易阅读和理解,其中的错误也更少.
规范化编程主要包括以下几方面的内容:
(1)命名的问题
(2)源程序的书写问题(3)算法设计的问题(4)程序注释
第1章习题
1.C语言的主要特点有哪些?
答:
一种语言之所以能存在和发展,并具有生命力,总是有其不同于其他语言的特点。
C语言的主要特点如下。
(1)语言简洁、紧凑,使用方便、灵活。
(2)运算符丰富.(3)数据结构类型丰富,具有现代化的各种数据结构。
(4)具有结构化的控制语句。
(5)语法限制不太严格,程序设计自由度大.(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
(7)一般仍习惯将C语言称为高级语言,因为C程序也要通过编译、连接才能得到可执行的目标程序,这是和其他高级语言相同的。
2.简要叙述C语言程序的构成,并说明一个C程序要正确地运行,必须要有什么函数,该函数在程序中的地位如何?
答:
C语言是一种结构化程序设计语言,具体地说,C语言是一种函数模块式结构的程序设计语言,所有的C程序都是由一个或多个函数构成的.一个C程序可由一个主函数和若干个其它函数构成.由主函数调用其他函数,其他函数也可以互相调用。
同一个函数可以被一个或多个函数调用任意多次。
这些函数是由编译系统提供的标准函数或用户自己定义的函数,其中有一个特别的函数“main”我们称之为主函数。
一个C程序要正确地运行,都必须有且只能有一个主函数,主函数是程序运行的入口,C程序从主函数开始执行,并最终从主函数结束。
3.开发一个C程序的一般过程是什么?
答:
开发一个C程序,通常包括以下几个步骤:
(1)编辑C语言源程序
(2)编译和链接(3)执行C程序。
当我们用任一编辑软件(编辑器)编写好C源程序后,就以文本文件的形式保存在计算机的磁盘上,该文本文件即为C的源程序文件。
当我们想运行一个C程序时,首先要进行程序编译和程序链接,从而生成机器代码即可执行文件.生成可执行文件后,就可以在操作系统控制下运行。
4.指出下面哪些是C语言的关键字?
A。
charB.abcC。
printfD.Int
E。
floatF。
defineG。
includeH.PI
答:
AE
5.下列说法正确的是()。
A。
在书写C语言源程序时,每个语句以逗号结束
B.注释时,“/”和“*”号间可以有空格
C.无论注释内容的多少,在对程序编译时都被忽略
D。
C程序每行只能写一个语句
答:
C
6.C语言源程序文件的后缀是(),经过编译和链接后生成了可执行文件,该文件的后缀是()。
A.。
objB..exeC..cD。
.doc
答:
CB
思考题
参照例题,编写一个C程序,输出以下信息:
***********************************************************
WelcomeJiLin!
WelcomeChangChun!
***********************************************************
答:
#include〈stdio。
h〉
intmain()
{
printf(”******************************************\n”);
printf(”WelcomeJiLin!
WelcomeChangChun!
\n”);
printf(”******************************************\n”);
return0;
}
第2章习题
1.指出下面哪些是合法的标识符?
A。
1_xB.intC.ABCD.i_10
E.sum。
aF。
%abcG._stuH。
abcd
答:
CDG
2.C语言的数据类型有哪些?
答:
C语言规定的数据类型较多,通常我们可以将其分为五大类:
简单类型、构造类型、指针类型、枚举类型和空类型,其中简单类型包括整型、实型和字符型,构造类型包括数组、结构体和共用体。
C语言的数据类型分类如图所示。
3.下面是一段程序:
#defineN10
intmain()
{
intiSum;
sum=(20+30)/N;
printf("sum=%d\n",iSum);
printf("resultis5\n”);
return0;
}
在这段程序中,常量有哪些?
答:
2030N
4.下面哪些写法是正确的,而且是常量?
A.12B.-。
345C.1.23e4D.'OPQ'
E.E10F。
0678G。
0xabcdefH."\n\\\'\123"
答:
ABCGH
5.下面哪个表达式的值为5?
A.19/4B。
19。
0/4
C.(float)19/4D.(int)(19。
0/4+0.5)
答:
D
6.指出下面的表达式中,哪些是错误的?
(1)a+b=5
(2)56=a11
(3)i=i++
(4)12
(5)a=5,b=6,c=7
答:
(1)
(2)
7.计算下列表达式的值。
已知int型变量a=5,b=6,c=7,char型变量ch=’0’,float型变量f=2。
1。
(1)(a-b*2)/3
(2)3。
2*(a+b+c)
(3)ch+a+f
(4)a+b%3*(int)(b+c)%3/6
答:
(1)-2
(2)57。
60000(3)55。
10000(4)5
8.写出下面表达式运算后x的值。
设x定义为整型变量,其初值为10.
(1)x+=10
(2)x—=10
(3)x*=5+10
(4)x/=x+x
(5)x+=x-=x*=x
(6)x+=x-=x*x
答:
(1)20
(2)0(3)150(4)0(5)0(6)-180
9.设int型变量a=3,b=4,c=5,则表达式((a+b)>c)&&(b==c)&&a||b+c&&b+c的值是()。
A.0B.1C.2D。
3
答:
B
10.如果int型变量i=1,j=2,k=3,l=4,则条件表达式i i: k〈l? k: l的值是()。 A。 1B。 2C.3D.4 答: A 11.字符常量与字符串常量有什么区别? 答: 用一对单引号括起来的单个字符称为字符常量.字符常量有两种: 一般字符常量和特殊字符常量.例如: ’a’就是一个字符常量.用一对双引号括起来的字符序列称为字符串常量。 例如"ChangChun”就是一个字符串常量。 两者的区别: (1)定界符不同,字符常量用单引号,字符串常量用双引号. (2)一般来说,字符常量仅能表示单个字符,字符串常量可以表示多个字符。 (3)转义字符是字符常量而不是字符串常量。 12.C语言为什么要规定对所有用到的变量要“先定义,后使用"? 这样做有什么好处? 答: C语言变量遵循“先定义,后使用”的原则,即变量在使用前,都要求先对其数据类型进行定义.因为在变量定义时,系统会对变量分配固定的内存,然后按照变量名对其进行访问。 这样做有如下好处: (1)便于系统对内存空间的管理与使用 (2)通过事先分配内存空间提高程序的运行效率。 13.简述转义字符的用途并举实例加以说明。 答: 通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,其主要用法有以下三个方面: (1)表示字符常量的单撇号(’)、用于表示字符串常量的双撇号(”)和反斜杠(\); (2)用反斜杠(\)后面跟某些特定字符表示不可打印的控制字符和特定功能的字符; (3)用反斜杠(\)后面跟一个八进制或十六进制数表示任意字符,其中八进制或十六进制数表示要表示字符的对应ASCII码值。 例如: '\n’表示换行操作,’\\’表示要输出一个反斜杠“\"。 14.在C语言中如何表示逻辑值“真”和“假”? 如何判断一个运算量的“真”和“假”? 答: 在C语言中用整型值0和1表示逻辑值“真"和“假",其中逻辑值“真”用1表示,逻辑值“假"用0表示。 判断一个运算量的“真”和“假”的方法是: 非0为真,0为假。 15.写出完成下列要求的C语言的合法表达式。 (1)已知半径r,计算球的体积V; (2)已知3条边长度a、b、c,计算三角形面积S; (3)已知上底a、下底b和高h,计算梯形面积S。 答: (1)V=(3/4)*3。 14*r*r*r (2)l=(a+b+c)/2,S=sqrt((l—a)*(l-b)*(l-c)) (3)S=(a+b)*h/2 思考题 若变量f已说明为float类型,i为int类型,则下面哪些表达式(或语句)能够实现将f中的数值保留小数点后两位,第三位进行四舍五入的运算? A。 f=(f*100+0.5)/100。 0;B.i=f*100+0。 5,f=i/100。 0; C.f=(int)(f*100+0。 5)/100。 0;D.f=(f/100+0.5)*100。 0; 答: BC 第3章习题 1。 输入一个字符,判别它是否是大写字母,如果是,将它转换成小写字母,如果不是,不转换,然后输出最后得到的字符。 答: #include h〉 intmain() { charc; printf("Pleaseinputacharacter: ”); scanf("%c”,&c); if(c>='A'&&c<=’Z') c=c+32; printf(”%c\n",c); return0; } 2。 C语言允许if-else嵌套使用,规定else总是和()配对. A.其之前最近的ifB。 第一个if C.缩进位置相同的ifD.其之前最近的且尚未配对的if 答: D 3.编程求1+3+5+…101的和。 答: #include〈stdio.h〉 intmain() { inti,s=0; for(i=1;i〈=101;i=i+2) s=s+i; printf("Theresultis%d",s); return0; } 4。 输出下面的图形。 * *** ***** 答: #include h> intmain() { inti,j,k; for(i=0;i<=2;i++) { for(j=2;j〉=i;j——) { printf("”); } for(k=0;k〈=2*i;k++) { printf("*"); } printf(”\n”); } return0; } 5.题目: 输出9*9口诀。 程序分析: 分行与列考虑,共9行9列,i控制行,j控制列. 答: #include〈stdio。 h〉 intmain() { inti,j,iResult; printf("\n"); for(i=1;i<10;i++) { for(j=1;j〈=i;j++) { iResult=i*j; printf(”%d*%d=%-3d",j,i,iResult); } printf("\n”); } return0; } 6.C语言中while与do—while语句的主要区别是()。 A。 do—while的循环体至少无条件执行一次 B。 do—while允许从外部跳到循环体内 C。 while的循环体至少无条件执行一次 D。 while的循环控制条件比do—while的严格 答: A 7。 若i,j均为整型变量,则以下循环()。 for(i=0,j=2;j=1;i++,j—-) printf("%5d,%d\n",i,j); A。 循环体只执行一次B.循环体执行二次 C。 是无限循环D.循环条件不合法 答: C 8。 以下程序的输出结果是()。 #include〈stdio.h〉 intmain() { intj; for(j=4;j〉=2;j--) { switch(j) { case0: printf(”%4s",”ABC”); case1: printf(”%4s”,”DEF”); case2: printf(”%4s”,"GHI”);break; case3: printf(”%4s”,"JKL”); default: printf(”%4s”,”MNO”); } } return0; } 答: MNOJKLMNOGHI 9。 for语句的格式及其执行过程是什么? 答: for语句的格式如下: for(表达式1;表达式2;表达式3) 语句 该语句的执行过程是: ①首先计算表达式1的值。 ②再计算表达式2的值,若值为真(T),则执行循环体一次;若为假,则跳出循环. ③然后计算表达式3的值。 ④转回第二步继续执行程序。 ⑤循环结束,执行for下面的程序。 10。 break和continue的区别是什么? 答: (1)continue语句只是结束本次循环,而不是终止整个循环的执行. (2)break语句则是结束整个循环过程,不再判断执行循环的条件。 思考题: 1。 100元钱买一百只鸡,公鸡5元,母鸡3元,小鸡三个1元,试编写一个C程序,给出该问题的解决方案。 答: #include intmain() { intcocks=0,hens,chicken; while(cocks〈=19) { hens=0; while(hens〈=33) {chicken=100-cocks—hens; if(5*cocks+3*hens+chicken/3==100)printf(”%d,%d,%d\n",cocks,hens,chicken); hens++; } cocks++; } return0; } 2。 密码程序。 通过键盘输入一行字符以@结束.要求: a->bb->c……。 z-a和A—〉bB—〉cZ—〉a,其它字符不变。 答: #include〈stdio.h〉 intmain() { charc; printf(”Pleaseinputthepassword: "); while((c=getchar())! ='@') { if(c〉=’a’&&c〈’z') c=c+1; if(c〉=’A'&&c〈'Z') c=c+33; if(c==’z’||c=='Z') c='a'; printf(”%c”,c); } return0; } 第4章习题 1.对于数组的描述错误的是()。 A.必须先定义,后使用 B.数组元素引用时下标从0开始 C.数组中的所有元素必须是同一种数据类型 D.定义时数组的长度可以用一个已经赋值的变量表示 答: D 2.定义数组时,表示数组长度的不应该是()。 A。 整型常量B。 符号常量C。 整型变量D.整型常量表达式 答: C 3.设有定义shortx[5]={4,6,8};,则数组占有的内存字节数是(). A.10B.6C.5D.3 答: A 4.以下程序运行后,输出结果是(). #include intmain() { inty=10,i=0,j,a[5]; do { a[i]=y%3; i++; y=y/2; }while(y〉=1); for(j=i—1;j〉=0;j--) { printf(”%d”,a[j]); printf(””); } return0; } 答: 1221 5.将一个二维矩阵行和列元素互换,存到另一个二维数组中并显示输出。 答: #include h> intmain() { inta[2][3]={{1,2,3},{4,5,6}}; intb[3][2],i,j; printf(”arraya: \n”); for(i=0;i<2;i++) { for(j=0;j〈3;j++) { printf(”%5d",a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } printf("arrayb: \n”); for(i=0;i<=2;i++) { for(j=0;j<=1;j++) printf("%5d",b[i][j]); printf(”\n"); } return0; } 6.从键盘输入一个3×3矩的整型矩阵,并求出对角线元素之和。 答: #include〈stdio.h> intmain() { inta[3][3],i,j,s=0; for(i=0;i〈3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i〈3;i++) for(j=0;j〈3;j++) { if(i==j) s=s+a[i][j]; elseif(i==2—j) s=s+a[i][j]; } printf("%d",s); return0; } 7.将一个一维数组(含10个整型数组元素)中的值按逆序重新存放。 答: #include〈stdio.h> intmain() { inta[10]={1,2,3,4,5,6,7,8,9,10}; inti,t; for(i=0;i<5;i++) { t=a[i]; a[i]=a[9-i]; a[9—i]=t; } for(i=0;i<10;i++) printf(”%d”,a[i]); return0; } 8.打印出以下的杨辉三角形(要求打印出10行)。 1 11 121 1331 14641 15101051 …………………… 答: #include〈stdio。 h〉 intmain() { inta[10][10],i,j; for(i=0;i〈10;i++) { a[i][i]=1; a[i][0]=1; } for(i=2;i〈10;i++) for(j=1;j a[i][j]=a[i—1][j-1]+a[i—1][j]; for(i=0;i〈10;i++) { for(j=0;j〈
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 语言 课后 习题 答案 最终