第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)1111111111111111、177777、FFFF(5)11111111111111111111、3777777、FFFFF2. 将下列二进制数转化为十进制数和十六进制数:(1)1100110101B (2)101101.1011B答:(1)821、335(2)45.6875、2D.B3. 写出下列数的原码、反码、补码:15、-20、-27/32答:(1)00001111、00000000、00001111(2)10010100、11101011、11101100(3)1.1101100、1.0010011、1.00101004. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少?答:0~65535、-128~127、-32768~327675.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. IntE. floatF. defineG. includeH. PI答:A E5.下列说法正确的是()。
A. 在书写C语言源程序时,每个语句以逗号结束B. 注释时,“/”和“*”号间可以有空格C. 无论注释内容的多少,在对程序编译时都被忽略D. C程序每行只能写一个语句答:C6.C语言源程序文件的后缀是(),经过编译和链接后生成了可执行文件,该文件的后缀是()。
A. .objB. .exeC. .cD. .doc答:C B思考题参照例题,编写一个C程序,输出以下信息:***********************************************************Welcome JiLin! Welcome ChangChun!*********************************************************** 答:#include <stdio.h>int main(){printf(”******************************************\n”);printf(” Welcome JiLin! Welcome ChangChun!\n”);printf(”******************************************\n”);return 0;}第2章习题1.指出下面哪些是合法的标识符?A. 1_xB. intC. ABCD. i_10E. sum.aF. %abcG. _stuH. abc d答:C D G2.C语言的数据类型有哪些?答:C语言规定的数据类型较多,通常我们可以将其分为五大类:简单类型、构造类型、指针类型、枚举类型和空类型,其中简单类型包括整型、实型和字符型,构造类型包括数组、结构体和共用体。
C语言的数据类型分类如图所示。
3.下面是一段程序:#define N 10int main(){int iSum;sum = (20 + 30) / N;printf("sum = %d\n",iSum);printf("result is 5\n");return 0;}在这段程序中,常量有哪些?答:20 30 N4.下面哪些写法是正确的,而且是常量?A. 12B. -.345C. 1.23e4D. 'OPQ'E. E10F. 0678G. 0xabcdefH. "\n\\\'\123"答:A B C G H5.下面哪个表达式的值为5?A. 19/4B. 19.0/4C. (float)19/4D. (int)(19.0/4+0.5)答:D6.指出下面的表达式中,哪些是错误的?(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)58.写出下面表达式运算后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)-1809.设int型变量a=3,b=4,c=5,则表达式((a+b)>c)&&(b==c)&&a||b+c&&b+c的值是()。
A. 0B. 1C. 2D. 3答:B10.如果int型变量i=1,j=2,k=3,l=4,则条件表达式i<j?i:k<l?k:l的值是()。
A. 1B. 2C. 3D. 4答:A11.字符常量与字符串常量有什么区别?答:用一对单引号括起来的单个字符称为字符常量。
字符常量有两种:一般字符常量和特殊字符常量。
例如:’a’就是一个字符常量。
用一对双引号括起来的字符序列称为字符串常量。
例如”ChangChun”就是一个字符串常量。
两者的区别:(1)定界符不同,字符常量用单引号,字符串常量用双引号。
(2)一般来说,字符常量仅能表示单个字符,字符串常量可以表示多个字符。
(3)转义字符是字符常量而不是字符串常量。
12.C语言为什么要规定对所有用到的变量要“先定义,后使用”?这样做有什么好处?答:C语言变量遵循“先定义,后使用”的原则,即变量在使用前,都要求先对其数据类型进行定义。
因为在变量定义时,系统会对变量分配固定的内存,然后按照变量名对其进行访问。
这样做有如下好处:(1)便于系统对内存空间的管理与使用(2)通过事先分配内存空间提高程序的运行效率。