习题
3.1 请将C语言的数据类型和其他高级语言的数据类型作比较,C有哪些特点?
3.2 C语言为什么规定对所有用到的变量要“先定义,后使用”,这样做有什么好处?
3.3 请将下面各数用八进制数和十六进制数表示:
(1)10 (2)32 (3)75 (4)-617
(5)-111 (6)2483 (7)-28654 (8)21003
3.4 将以下3个整数分别赋给不同类型的变量,请将赋值后数据在内存中的存储形式填入表3-4中,(注:如没有学过二进制数和补码的,此题可不做)。
变量的类型 | 25 | -2 | 32769 |
int 型(16位) | |||
long 型(32位) | |||
short 型(16位) | |||
signed char(8位) | |||
unsigned int 型 | |||
unsigned long 型 | |||
unsigned short 型 | |||
unsigned char 型 |
3.5 字符常量与字符串常量有什么区别?
3.6 写出以下程序的运行结果:
#include <stdio.h>
main()
{
char c1 = 'a', c2 = 'b', c3 = 'c', c4 = '\101', c5 = '\116';
printf("a%c b%c\tc%c\tabc\n",c1, c2, c3);
printf("\t\b%c %c\n",c4, c5);
}
运行结果:
aa bb cc abc
A N
3.7 要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5 这5个变量的值分别为'C'、'h'、'i'、'n'、'a',经过运算,使c1、c2、c3、c4、c5 分别变为'G'、'l'、'm'、'r'、'e',并输出。
3.8 例3.6能否改成如下,分析运行时会显示什么信息?为什么?
#include <stdio.h>
main()
{
int c1, c2; //原为char c1, c2;
c1 = 97;
c2 = 98;
printf("%c%c\n", c1, c2);
printf("%d $d\n", c1, c2);
}
3.9 求下面算术表达式的值:
(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5
3.10 写出下面程序的运行结果:
#include <stdio.h>
main()
{
int i, j, m, n;
i = 8;
j = 10;
m =++ i;
n = j++;
printf("%d,%d,%d,%d\n", i, j, m, n);
}
3.11 写出下面赋值的结果,表3-5中所写出数值是要将它赋给其他类型变量,将所有空格填上赋值后的数值。
int | 99 | 42 | |||||
char | 'd' | ||||||
unsigned int | 76 | 65535 | |||||
float | 53.65 | ||||||
long int | 68 |
3.12 写出下面赋值表达式运算后a的值,设原来a=12:
(1)a += a (2)a -= 2 (3)a *= 2+3 (4)a /= a+a
(5)a %= (n %= 2),n的值等于5 (6)a+=a-=a*=a