第八章习题答案 1.1选择题 1.B2.A3.A4D 2.2编程题 1利用指针的方法,求数组中的最大数和最小数。 main( -a,max.min: fork=0,k<10,k+) scanf%d",a+k)月 max=min=af0l: for(k=1:k<10,k+) if(max<*(a+k))max=*(a+k); =*(a+k) 2.编程序,将字符串第k个字符开始的连续个字符复制到另一个字符串中。 #include“stdio.h char s[100],t100,*p,*q printf("\nstring=”): ectts): scanf(%d.%d".&k.&n). for(q-t.p=s+k-1;*p&&p<s+k-1+n.p++) *q++=p; *a=0 Puts(t): 3.已知数组中存放有个数,现任意读入一个书x要求删除数组中与x相同所有数。 #define N 100 main() inta[N].n.k.x.j-0: printf("nn=?") scanf(%d".&n): printf("nArray a=?"); for(k=0:ksn:k++) sanf%dr”,atk printf( scanf(%d”,&x for(k=0;k<n.k++) if(alkl!=x) a[j++]=a[k]:
第八章习题答案 1.1 选择题 1. B 2. A 3. A 4.D 2.2 编程题 1.利用指针的方法,求数组中的最大数和最小数。 main() {int k,a[10],*p=a,max,min; for(k=0;k<10;k++) scanf(“%d”,a+k); max=min=a[0]; for(k=1;k<10;k++) if(max<*(a+k)) max=*(a+k); else if(min>*(a+k)) min=*(a+k); printf(“max=%d,min=%d”,max,min); } 2.编程序,将字符串第 k 个字符开始的连续 n 个字符复制到另一个字符串中。 #include “stdio.h” main() {int k,n; char s[100],t[100],*p,*q; printf(“\nstring=?”); gets(s); printf(“k,n=?”); scanf(“%d,%d”,&k,&n); for(q=t,p=s+k-1;*p&&p<s+k-1+n;p++) *q++=*p; *q=0; puts(t); } 3.已知数组中存放有 n 个数,现任意读入一个书 x 要求删除数组中与 x 相同所有数。 #define N 100 main() { int a[N],n,k,x,j=0; printf("\nn=?"); scanf(“%d”,&n); printf(“\nArray a=?”); for(k=0;k<n;k++) scanf(“%d”,a+k); printf(“x=?”); scanf(“%d”,&x); for(k=0;k<n;k++) if(a[k]!=x) a[j++]=a[k];
for(k-0;k<j;k++) printf%d“,ak])i 4.遍一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出 该串。请用指针完成。 #include "string.h" #include "stdio.h" #define N 100 main() {char *a[N]={"computer"); int i for(i=0:(*a)[i]=\0',i++) (printf("%c"(*a)[); *a=*a叶1;} 5.输入3个整数,按由小到大的顺序输出。 swap(int *ptl,int *pt2) { int temp; temp=*ptl; *pt1=*pt2; *pt2=temp; exchange(int *q1,int *q2,int *q3) { if (*q1>*q2)swap(q1,q2); if (*qI>*q3)swap(q1,q3); if (*q2>*q3)swap(q2,q3); main() { int a,b,c,*pl,*p2,*p3; scanf%d,%d,%d”,&a,&b,&c方 pl=&a;p2=&b;p3=&c; exchange(pl,p2,p3); printf(An%d,%d,%d n",a,b,c); 3.3阅读程序,写出程序运行结果 程序一:max=12 程序二:3,1,5 7,5,5 13579 程序三:2,2 程序四:sum=25
for(k=0;k<j;k++) printf(“%d “,a[k]); } 4.遍一程序,将字符串 computer 赋给一个字符数组,然后从第一个字母开始间隔地输出 该串。请用指针完成。 #include "string.h" #include "stdio.h" #define N 100 main( ) {char *a[N]={"computer"}; int i ; for(i=0;(*a)[i]!='\0';i++) {printf("%c",(*a)[i]); *a=*a+1;} } 5.输入 3 个整数,按由小到大的顺序输出。 swap(int *pt1,int *pt2) { int temp; temp=*pt1; *pt1=*pt2; *pt2=temp; } exchange(int *q1,int *q2,int *q3) { if (*q1>*q2) swap(q1,q2); if (*q1>*q3) swap(q1,q3); if (*q2>*q3) swap(q2,q3); } main() { int a,b,c,*p1,*p2,*p3; scanf(‘%d,%d,%d”,&a,&b,&c); p1=&a; p2=&b; p3=&c; exchange(p1,p2,p3); printf(“\n%d,%d,%d\n”,a,b,c); } 3.3 阅读程序,写出程序运行结果 程序一:max=12 程序二:3, 1, 5 7, 5, 5 13579 程序三:2,2 程序四:sum=25