printf(\ //输入提示
while((c=getchar())!='\\n'&&i<99&&j<99) //输入字符串,遇回车符结束 { if(c>=48&&c<=57) //对是否为~9的数字进行判断 str1[i++]=c; //输入的是数字,则存放入str1中
else if(c>=65&&c<=90||c>=97&&c<=122) //对是否为英文字母进行判断 str2[j++]=c; //输入的是字母,则存放入str2中 else ; //既不是数字,又不是字母,忽略 }
str1[i]='\\0'; //加字符串结束标志// str2[j]='\\0';
printf(\ //打印结果 printf(\}
第6章 指针
一、选择题 1 B 16 B 31 C 46 C 61 A 2 B 17 C 32 A 47 C 62 D 3 D 18 C 33 B 48 D 63 A 4 C 19 B 34 A 49 A 64 B 5 D 20 B 35 B 50 C 65 C 6 A 21 A 36 D 51 D 66 D 7 B 22 C 37 D 52 B 67 A 8 B 23 D 38 C 53 D 68 A 9 A 24 D 39 C 54 A 10 B 25 D 40 A 55 C 11 B 26 C 41 B 56 D 12 C 27 D 42 A 57 C 13 A 28 C 43 B 58 A 14 A 29 C 44 C 59 B 15 A 30 A 45 A 60 D 二、填空题 1. 0
2. p是指向整形数据的指针变量;q是指针数组,它由10个指向整形数据的指针元素组成;r是指向函数的指
针,该函数返回一个整数值;s是返回一个指针的函数,该指针指向整形数据 3. 4. 5. 6. 7. 8.
4、12 8、8 12、12 3
*(p+6) 456789 9. hELLO 10. ef
11. ① return 0 ② *p1-*p2 12. 110 13. 71
14. p=(double *)malloc(sizeof(double)) 15. br[i]
16. ① str+strlen(str)-1 ② i>strlen(str)/2 ③ huiwen(str) 17. *t
18. *pmax=*px
16
19. 10 20. 40 21. efgh 22. 3
23. 7777654321
三、程序分析题 1. 3 2. 19
3. 1,2,3,4,5,6,7,8,9,0, 4. 8,7,6,5,4,3,2,1 5. 5678901234 6. 2,3,4,5,6 7. 25
8. 6,2,3,4,5, 9. 0 10. z 11. 6789 12. 6 13. 3,4 14. AGAAGAG 15. ABCD
BCD CD D 16. 8.000000 17. 2 4 18. 3 4 5 19. 10
20. gfedcba
21. Afternoon 22. 61
23. accbbxxyy,bbxxyy 24. 20 25. 31 26. 567 27. d
28. 3,5,3,5 29. 1,3 30. 2 31. a 32. 5 3 33. 6789 34. 15
35. -5,-12,-7 36. 6385
17
37. 4 3 2 1 38. 35745 39. 9 40. 1.10 41. 8 42. 26
43. day 44. 23 45. 60 46. 2 47. 6
48. 0246802468 49. Program
gram
50. 2,5,1,2,3,-2, 51. CDABC 52. 0 0 0 8 53. aa 54. Java
dBase
C Language Pascal 55. 6 7 8
Java
9,basicjava 56. 6
57. GFEDCB 58. SO 59. 10 60. Itisis 61. goodgood! 62. 8 63. 17
64. ar=9 ar=9 ar=11 65. 6 66. 12345 67. abcfg 68. abcbcc 69. bcdefgha 70. 14 71. 10 72. 40 73. 10 28
四、程序设计题
1. #include
18
main() {
int number[10]; input(number); max_min(number); output(number); }
input(number) int number[10]; {int i;
for(i=0;i<9;i++)
scanf(\ scanf(\}
max_min(array) int array[10];
{int *max,*min,k,l; int *p,*arr_end; arr_end=array+10; max=min=array;
for(p=array+1;p*max) max=p;
else if(*p<*min) min=p; k=*max; l=*min;
*p=array[0];array[0]=l;l=*p; *p=array[9];array[9]=k;k=*p; return; }
output(array) int array[10]; { int *p;
for(p=array;p
printf(\}
2. #include
main() {
int number[20],n,m,i;
printf(\scanf(\printf(\scanf(\for(i=0;i scanf(\scanf(\move(number,n,m); for(i=0;i printf(\ 19 printf(\} move(array,n,m) int n,m,array[20]; { int *p,array_end; array_end=*(array+n-1); for(p=array+n-1;p>array;p--) *p=*(p-1); *array=array_end; m--; if(m>0) move(array,n,m); } 3. #include void main() { int data[7]={1,2,3,4,5,6,7},temp,k,*ph,*pt; ph=data; //定义指针指向数组data的首元素 pt=data+6; //指针指向数组的最后一个元素 while(pt>ph) { temp=*ph; *ph=*pt; *pt=temp; //数据进行交换 ph++; //两指针向中间移动 pt--; } for(k=0;k<7;k++) printf(\//输出结果 printf(\} 4. void move(int *p) { int i,j,t; for(i=0;i<3;i++) for(j=i;j<3;j++) { t=*(p+3*i+j); *(p+3*i+j)=*(p+3*j+i); *(p+3*j+i)=t; } } main()函数请读者自己编写。 5. #include main() {int i,a[15]; int *p; void px(int *q,int n); 20