购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6 疑难解答和上机题

2.6.1 疑难解答

(1) 常量和变量有什么区别呢?

解答:常量是不能改变的量,例如某个城市的名字,一般是不会改变的,但该城市的天气情况却经常变化,因此,城市的名称就是常量,而该城市的天气就是变量。

(2) 除了二进制、八进制、十进制和十六进制,还有其他进制么?

解答:有的,比如等式 110+20=200 也有成立的时候,但在什么情况下成立呢,显然十进制是不成立的。这里我们假设它在x进制下成立,那么将这个等式展开成十进制模式:

转化为:

解得:

显然,x=0 不符合要求,因此取x=3。

因此,在三进制情况下上述等式成立。所以,存在除一般进制外的其他进制,只不过日常生活中很少应用。

(3) 常量 123、123.和 123.0 有在内存中存储时有什么区别?

解答:常量 123 表示整型常量,在内存中占 4 个字节的存储空间,123.和 123.0 表示实型常量,在内存中占 8 字节的存储空间(实型常量在内存中默认都以双精度实型存储)。

(4) 定义变量为short和int类型,都属于整型,两者有什么区别呢?

解答:实际应用中,有时需要用到较大的数值,有时仅使用较小的数值。例如表示时间的变量,最大值为 24 或者 60 即可,而有些又需要较大的数值才能表示,例如地球进化的时间,地球到月球的距离等。short型只能表示-32768~32767 之间的数,内存中占 2 字节,int型能表示-2147483648~2147483647 之间的数,内存中占 4 字节。有时候不需要表达很大的数值时,就使用short类型,这样就节省了内存的很多资源。

(5) 为什么变量不能重名?

解答:变量不像人一样,可以根据体貌特征分析两个姓名相同的人,计算机识别不同的变量的唯一方法就是按照不同的变量名区分。而假如有一变量定义为int型,然后又将这一变量定义为short型,系统会因为定义时占不同的内存单元而出现矛盾,为了避免计算机这种矛盾出现,C语言系统禁止使用相同的变量名。

(6) 为什么计算机中需要区别有符号和无符号

解答:实际应用中,有些量必须由自已决定是否需要正负。如果这个量不会有负值,那么我们可以定它为不带正负的类型。例如年龄,总是正的,而某人的净收入,可能为正,也可能为负。计算机提供无符号的目的是尽可能对没有负号出现的变量赋予更大范围的数值。以使这个变量使用时可以更大范围的存取数据。

(7) 字符串"a"和字符'a'有什么区别?

解答:字符和字符串主要区别在于两者在内存中所占的资源不同。字符串中每个字符在内存中占 1 个字节,但字符串末尾系统自动添加字符串结束符'\0',因此,字符串"a"所占字节数为 2,而字符'a'所占字节数为 1。

(8) 标识符_input_,This-year,goto,3ku是否可定义为变量?

解答:变量定义的规则:

(1) 由字母、数字和下画线组成

(2) 变量名不能和关键字相同

(3) 第一个字符必须是字母或下画线

第一个标识符_input_可以作为变量;第二个标识符This-year由于含有字符"-",因此不能作为变量;第三个标识符goto为C语言关键字,因此也不能作为变量;第四个标识符 3ku由于首字母为数字 3,因此也不能作为变量。

(9) 为什么字符变量或常量可以进行算术运算?

在计算机系统中,字符都是以ASCII码存在系统中的,也就是每个字符都相当于一个数字,因此,程序使用字符作算术运算就相当于使用数字作算术运算,两者没有本质的区别。例如,定义变量c:

C语言中,字母以ASCII码存放,且大小写字母按序ASCII码递增,在字母'a'的基础上加 3,为字母'd',因此,变量c为字母'd'。

(10) 什么情况下会使用枚举呢?

解答:枚举类似于定义一些符号,这些符号都代表一定的数值,并且这些符号可以定义为人们容易看懂的名字。有时候在程序中要对一些变量赋值,同时又希望这些值表示一定的含义,这时使用枚举就可以顺利地达到要求。例如,定义枚举类型:

这样定义了一个一天中日常作息时间表,例如,有变量作为时间,当要验证该时间是否需要吃午饭时,只需要该变量和HaveLunch作比较,若相等,则该吃午饭了,若不等,则不吃午饭。这样设置将很容易使程序阅读者理解程序设置的功能。

2.6.2 上机题

(1) 使用%d格式分别打印十进制数 100 和十六进制数 0x100,分析打印数值的差别。

(2) 浮点数 100.123 可以使用%d格式打印输出,也可以使用%f格式输出,试编写完整C语言代码实现使用这两种不同格式输出的效果。

(3)字母"A"和"a"的ASCII码分别为 65 和 97,写一段完整的程序,将"A"和"a"的ASCII码输出到屏幕上。(提示:使用十进制输出格式%d可以输出字符的ASCII码值)。

(4) 试编写一段完整的程序,利用格式输出%s,输出字符串:

提示:若使用一条输出语句,调用printf函数,字符串中可以使用换行符'\n'。

(5) 变量定义时通常使用变量定义语句,如定义字符型变量c,可使用语句:

试编写程序,定义整型变量i,并输出i的值。(提示:定义变量需要赋初值,否则将输出垃圾值)

(6) 在程序题 5 的基础上,修改程序,定义char型变量a,并赋初值'a',使用a进行算术运算后输出最后一个小写字母'z'。(提示:字符可使用ASCII码参与算术运算,例如,变量'b'的ASCII码值等于'a'+1)

(7) 参考范例 2.6,试编写程序输出圆周率小数点后 10 位。(提示:圆周率小数点后20 位为 3.14159265358979323846)

(8) C语言中,可使用格式输出%o输出八进制数,试编写程序,以八进制输出整数10000 和-10000。

(9) C语言中,可使用格式输出%x输出十六进制数,试编写程序,以十六进制输出整数 1234567。

(10) 试编写程序,定义表示星期的枚举类型:

并在程序中定义枚举类型变量enum week week1;

使week1 = Sat并输出week1 的值。

附表 1

附表 2 LYQaSo9tXecxouyJJXZALia6QaJjS964GN3Y4gHO7fUxjIGzkkWx6TNE82O8fl7L

点击中间区域
呼出菜单
上一章
目录
下一章
×