习题解析与答案
第1章C语言概述
一. 简答题
1.概述C语言的主要特点。 【解答】
(1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。
(3)运算符多样。C语言中的运算符包含的范围非常广泛。
(4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch语句、for语句。
(5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。
(6)所生成的目标代码质量高,可移植性好。
2.构成C语言程序的基本单位是什么它由哪几部分组成
【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。
3.C语言程序的运行一般要经过哪几个步骤
【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果
1.输入下面程序并运行。 main() {
int a1,a2,x; a1=100; a2=50; x=a1-a2;
printf(″x=%d\\n″,x); }
【解答】运行结果为:x=50 2.输入下面程序并运行。
main() {
int a1,a2,x; a1=10; a2=20; x=a1*a2;
printf(″a1=%d,a2=%d\\n″,a1,a2); printf(″x=%d\\n″,x);
}
【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include <> main() {
printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ }
【解答】运行结果为:******
***** **** *** ** *
思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题
1.参照本章例题,编写一个C程序,用于显示如下信息: *************************
I love C programs! ************************* 【分析与提示】
①要有文件包含语句#include <>。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在文件中。
②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\\n”。 参考代码: #include <> main()
{
printf(\ printf(\ printf(\ }
第2章 数据类型及其运算
一.简答题
1.C语言中的数据类型主要有哪几类 【解答】 短整型(short int )
整型 整 型 (int) 长整型(long int ) 基本类型 字符型 (char) 单精度(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型
构造类型 结构体类型 (struct) 共用体类型(union) 指针类型
空类型(void)
2. 字符常量与字符串常量有什么区别
【解答】字符常量用单括号括起,字符串常量用双括号括起;字符常量存储时占1个字节,字符串常量存储时除了n个字符外,还有系统加上的字符串终止符\\0,所以字符串常量存储时占n+1个字节。
3. C语言中的常量包括哪几类各自是如何构成的
【解答】C语言中的常量是一些其值预先定的量,并且在程序执行过程中其值不再发生变化。常量的分类遵循基本数据类型分类原则,C语言编译系统自动将其存放在于类型相应的内存单元中。其类别包含整形常量、浮点常量、字符常量、字符串常量和枚举常量。整形常量又分为十进制整形常量、八进制整形常量、十六进制整形常量。浮点常量分成十进制形式和指数形式。C语言中的,字符常量是
用单括号括起来的一个字符或是字符序列,而字符串常量是用一对双括号括起来的零个或者多个字符组成的序列。
4. 简述指针、变量的指针、变量的值、指针变量与指针变量的值的含义是什么
【解答】C语言中将地址又称为“指针”。一个变量所分配的内存空间首字节地址,称为该变量的指针(地址),变量的值就被放入所分配的地址单元中。地址一旦被分配,就不会再改变,所以,指针是一个常量。既然是常量就可以把它赋给一个变量。用来存放指针的变量,被称为指针变量。一个指针变量的值是变量的地址,一个指针变量可以被赋予不同的指针值。
5. 下面哪些是不合法的常量说明不合法的理由。
123,,0892,’M’,’\\n’,0xabc,,”Morning”,【解答】非法常量有: 0892——含有非八进制数字8和9
——非法指数形式浮点常量:规定e后面的指数必须为整数。 6.下面对变量定义的语句哪些不正确为什么请改正。
(1) char c1,int a2; (2) INT a,b; FLOAT x,y;(3) a,b:char; (4) char if; (5) int a,b (6) Int a:b:c; (7) int a,x; float x,y; 【解答】
(1) char c1,int a2;
错误。定义不同类型的变量时,应用分号彼此分开。 改正为:char c1; int a2; (2) INT a,b; FLOAT x,y;
错误。C语言中表示类型名的关键字必须小写。 改正为:int a,b; float x,y; (3) a,b:char;
错误。C语言中变量定义格式为:类型名 变量名; 改正为: char a,b; (4) char if;
错误。变量名不能与C语言的关键字重名。 改正为:char f1; (5) int a,b
错误。变量定义以语句形式出现,应以分号结尾。 改正为:int a,b; (6) Int a:b:c;
错误。类型名不能有大写字母,相同类型名之间用逗号分隔。 改正为:int a,b,c; (7) int a,x; float x,y;
错误。在同一程序位置上,同一变量名不能重复定义充当两个不同的变量。 改正为:int a,x; float x1,y;
7. 下述字符串常量的长度是多少在内存中存储时各自占用的单元数又是多少 (1) “Hello!” (2) “ABC\\n\\\\TH\\064\\” (3) “\\xAB*\\765+123=” 【解答】
(1)“Hello!” 字符串长度为6,占用内存字节数为7。
(2)“ABC\\n\\\\TH\\064\\” 字符串长度为9,占用内存字节数为10。因为