C语言编程:习题解析与解答

需积分: 9 1 下载量 125 浏览量 更新于2024-07-31 收藏 96KB DOC 举报
"C语言程序设计(第二版)习题解答" 在《C语言程序设计(第二版)》中,作者谭浩强提供了丰富的习题,帮助读者深入理解和掌握C语言的基本概念和编程技巧。以下是部分习题的解析: 1.5 这道题目要求编写一个简单的C程序,输出特定的字符串。程序可以这样实现: ```c #include <stdio.h> int main() { printf("******************************\n"); printf("VeryGood!\n"); printf("******************************\n"); return 0; } ``` 1.6 该题目的目的是找出三个数中的最大值。代码如下: ```c #include <stdio.h> int main() { int a, b, c, max; printf("请输入三个数:"); scanf("%d %d %d", &a, &b, &c); max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c); printf("最大值是:%d\n", max); return 0; } ``` 3.3 这题要求将十进制数转换为八进制和十六进制补码表示。例如: - (1) 10的八进制表示为12,十六进制表示为0xA - (2) 32的八进制表示为40,十六进制表示为0x20 - (3) 75的八进制表示为113,十六进制表示为0x4B - (4) -617的八进制补码表示为-177773,十六进制表示为-0x1D9 - (5) -111的八进制补码表示为-167,十六进制表示为-0x73 - (6) 2483的八进制表示为3733,十六进制表示为0x9CD - (7) -28654的八进制补码表示为-147552,十六进制表示为-0x3A42 - (8) 21003的八进制表示为33303,十六进制表示为0x507B 3.5 字符常量是单个字符,用单引号括起,如'x';字符串常量是多个字符组成的序列,以双引号括起,如"xyz"。字符串常量会自动添加一个空字符'\0'作为结束标识。 3.6 程序运行结果: ``` a'b' c abc \b'e'n ``` 3.7 要实现这个密码加密,可以通过计算每个字符的ASCII值加上4得到新的字符。代码如下: ```c #include <stdio.h> #include <ctype.h> int main() { char c1 = 'C', c2 = 'h', c3 = 'i', c4 = 'n', c5 = 'a'; c1 = c1 + 4; c2 = c2 + 4; c3 = c3 + 4; c4 = c4 + 4; c5 = c5 + 4; printf("%c%c%c%c%c\n", c1, c2, c3, c4, c5); // 输出Glmre return 0; } ``` 3.8 修改后的程序依然能正常工作,因为c1和c2被赋值为字符'a'和'b'的ASCII值,然后在printf中以字符形式输出。所以结果与原程序相同,输出: ``` a b 97 98 ``` 3.9 表达式求值: (1)当x=2.5, a=7, y=4.7时,表达式计算结果为: ``` 2.5 + 7 % 3 * (int)(2.5 + 4.7) % 2 / 4 = 2.5 + 1 * 2 / 4 = 2.5 + 0.5 = 3.0 ``` (2)当a=2, b=3, x=3.5, y=2.5时,表达式计算结果为: ``` (float)(2 + 3) / 2 + (int)3.5 % (int)2.5 = 2.5 + 1 = 3.5 ``` 3.10 程序运行结果: ``` 8,11,9,11 ``` 这涉及到自增运算符的优先级问题,i 和 j 先被自增,然后值被赋给 m 和 n。 3.12 a 的值变化: (1)a += a 等价于 a = a + a,若 a=12,则 a 变为 24。 (2)a -= 2 等价于 a = a - 2,a 变为 22。 (3)a *= 2+3 等价于 a = a * (2+3),a 变为 44。 (4)a /= a+a 等价于 a = a / (a+a),a 变为 11。 (5)a%=(n%=2),首先 n 变为 5%,2 = 1,然后 a 变为 a % 1,a 保持不变。 (6)a += a-=a*a 等价于 a = a + (a - a*a),a 仍然等于 11。 第四章的题目涉及C语言的更多高级概念,如指针和内存管理,此处未给出具体习题,但这些概念包括指针的使用、内存分配、数组和指针的关系等,这些都是C语言中的核心内容。学习这部分需要理解指针的运算和指针在函数参数传递中的应用,以及如何动态地管理和释放内存。