文档详情

第十章指针习题答案.doc

发布:2018-02-17约7.41千字共9页下载文档
文本预览下载声明
第十章习题答案 一、单项选择题 C A B B D D A C B D B A C C C D C B A C C A C D B C 或 D D A C D C D B 二、填充题 地址 加减 赋值 数组名 地址 NULL 取地址运算符 相互赋值 赋NULL 加减整数 ++, -- 间接访问 取地址 比较 3 +3 double *p=a 地址 所指的变量值 地址 sz[i] p[i] *(sz+i) 和 *(p+i) ABCD A static int a[5]; int a[4][5], **p=a; 50 a, b, c *a, *b, *c *min=*b *min=*c *min ’\0’ ++ sp=str[i] sp strlen(sp) 三、程序分析题 1. 输出结果: udent 2. 输出结果: our 3. 输出结果: 3 ello 4. BBB AAA 123 5. 程序输出:ABCDEDGH 6. 程序的主要功能:把输入的10个整数反序一行一个的输出。 7. 程序运行的输出结果:A ABCD B BCD C CD D D 8. 该程序找出数组中最大和最小的元素,分别与第一和最后的元素交换,运行结果输出:13,10,-3,1,7,-21 9. 程序用pi和指针pj指向字符串s的头尾,然后逐步向中比较字符,到不等时终止。 若都相等,则是“回文”,回答“YES”,否则回答“NO”。因此当输入字符串“LEVEL” 时,输出“YES”,当输入字符串“LEVAL”时输出“NO”。 10. 四个字符指针指向四个字符串,程序每次循环p指向一个字符串,*p输出第一个字符,运行的输出结果:AEIM 11. 程序运行输出结果:0 1 2 3 -1 0 1 2 -2 –1 0 1 -3 –2 –1 0 12.程序运行输出结果: 1 0 0 1 13. 程序运行输出结果: x=10 , y=5 x=10 , y=10 14. 程序运行输出结果: 3 , 2 , 5 3 , 3 , 4 四、程序设计题(全部题目均要求用指针方法实现) 1.解: #include stdio.h void main( ) { int a,b,c, *pa=a, *pb=b, *pc=c; scanf(“%d,%d,%d“,pa,pb,pc); if(*pa=*pb) if (*pb*pc) printf(“%d,%d,%d\n“,*pa,*pc,*pb); else if (*pa*pc) printf(“%d,%d,%d\n“,*pa,*pc,*pb); else printf(“%d,%d,%d\n“,*pc,*pa,*pb); else if (*pc*pb) printf(“%d,%d,%d\n“,*pc,*pb,*pa); else if (*pa*pc) printf(“%d,%d,%d\n“,*pb,*pa,*pc); else printf(“%d,%d,%d\n“,*pb,*pc,*pa); } 2.解: #include stdio.h #define N 15 void main( ) { int a[N],b,*p,*q; for(p=a;pa+N;p++) scanf(“%d”,p); for(p=a,q=a+N-1;pa+N/2;p++, q--) { b=*p, *p=*q; *q=b; } for(p=a;pa+N;p++) printf(“%3d”,*
显示全部
相似文档