300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > c语言程序设计教程第三版答案9.5 C语言程序设计-第5-9章习题解答.ppt

c语言程序设计教程第三版答案9.5 C语言程序设计-第5-9章习题解答.ppt

时间:2020-04-06 21:52:31

相关推荐

c语言程序设计教程第三版答案9.5 C语言程序设计-第5-9章习题解答.ppt

C语言程序设计-第5-9章习题解答

华中科技大学计算机学院 C语言程序设计 第5-9章 部分习题解答 作业中问题较多的习题 第5章5.4(2) 第6章6.1,6.3,6.5(6),6.8 第7章无 第8章8.18 第9章9.1(5)(6),9.18(4) 第5章5.4(2) 5.4 下列哪些声明可以作为标准C语言的函数原型? (2) int f(); 思路:参考p138第14行 如果函数没有参数,函数定义时void可以缺省,而函数原型的参数表必须指定为void. Turbo C和VC下都可以通过 #include "stdio.h" int f(); void main(void) { f(); } int f() { int x=1; printf("%d\n",x); return x; } 第6章6.1 6.1 下列哪些宏定义可能是错误的?为什么? (1)#define MOD % /* a MOD d 被替换为 a % d */ (2)#define NUMBER = 20 ; /*? NUMBER*2被替换为 = 20 ;*2 */ (3)#define ident (x) x /*? y=ident-2被替换为y=(x) x-2 */ (4)#define void int /*? 不是好定义. void f(void);被替换为int f(int); */ (5)#define mul(x,y) x*y /*? mul(u-1,v-1)被替换为u-1*v-1 */ 第6章6.1 6.1 (1)正确 (2)错误,不需要加“;”(不完整) (3)错误,“ident”与“(”之间不能有空格 (4)错误,宏名不能是关键字“void” (5)错误,将x*y改成((x)*(y)) 第6章6.3 6.3 已知下面宏定义,写出宏调用for(i=0;i10 #error SIZE great than 10 #endif 第6章6.5(6) #ifndef SIZE assert(0); #else assert(SIZE<10&&SIZE>1); #endif 注意:该答案只能在程序运行时才起作用,与题意不符. 第6章6.8 6.8 有下面宏定义,写出宏调用M(M)(A,B) 的展开形式。 #define M(x) M##x #define MM(M,y) M=#y 解: M(M)(A,B) ?M##M (A,B) ?MM (A,B) ?A=#B ? A=“B ” 所以, M(M)(A,B) 被替换为: A=“B ” 注意: #B ?”B” M##M ?”M” ”M” ?”MM” 第6章6.8的应用 #define M(x) M##x #define MM(M,y) M=#y void main(void) { char *p; M(M)(p,B); printf("%s\n",p); } 第9章9.1(5)(6) (5) 声明一个整型常量指针pci并对其进行初始化。 (6) 声明一个指向字符型常量的指针pcc。 (5)解: int x=1,* const pi=&x; 注:int y=2; pi=&y;将出错. (6)解: const char ch='a', *pc=&ch; 注: *pc=‘b’;将出错. 参阅:第9章ppt p48 第9章9.18(4) 9.18 请根据下面各题的解释,写出对应的声明语句。 (4)设p是3个元素的函数指针数组,函数指针数组中每个元素所指向的是无参、返回值为指向长度为4的整型数组的指针

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。