1、第7章 指针一、选择题1. A2. D3. D二、填空题1. 指针 取地址2. 33. 9876 8764. 24三、编程题1. 参考程序如下。main() int a3,i,j,t; printf(Please enter three number:n) for(i=0;i3;i+) scanf(%d,&ai); for(i=0;i2;i+) for(j=0;j2;j+) if(ajaj+1) t=aj;aj=aj+1;aj+1=t; for(i=0;i3;i+) printf(%dn,ai);2. 参考程序如下。int array44;convert(int array44) int i,
2、j,t; for (i=0;i4;i+) for (j=i+1;j4;j+) t=arrayij; arrayij=arrayji; arrayji=t; main( )int i,j;printf(Input array:n);for (i=0;i4;i+) for(j=0;j4;j+) scanf(%d,&arrayij);printf(noriginal array :n);for (i=0;i4;i+) for (j=0;j4;j+) printf(%5d,arrayij); printf(n);convert(array);printf(convert array:n);for (i
3、=0;i4;i+) for(j=0;j4;j+) printf(%5d,arrayij); printf(n); 3. 参考程序如下。main() int i, j , k, temper; int *p1, *p2, *p3; printf(Please input 3 integers:n); scanf(%d%d%d,&i, &j, &k); p1=&i; p2=&j; p3=&k; printf(before changed ,the 3 numbers are:n); printf(i=%d, j=%d,k=%dn,i, j, k); temper=*p1;*p1=*p3;*p3=*
4、p2; *p2=temper; printf(after changed ,the 3 numbers are:n); printf(i=%d, j=%d,k=%dn,i, j, k);4. 参考程序如下。#include#includechar *s=1a2b3c4d;void main() int i,j; char t; for(i=0,j=strlen(s)-1;ij;+i,-j) t=si; si=sj; sj=t; printf(%sn,s);5. 参考程序如下。int y_max(int *p,int n) int max=*p,i,k=0; for(i=0;in;i+) /*这
5、里判断到in,而不是i=n*/if(max*(p+i) k=i;max=*(p+i); /*记得要在这里更新一下max的记录*/ return k; #define N 10 #include int main() int aN;int i,m,max; for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN;i+) printf(%d ,ai); m=y_max(a,N); printf(nmax=a%d=%d,m,am); return 0;6. 参考程序如下。#include#include#include#define N 80int cnum=0,dnum=
6、0; /*全局变量用于在两个函数之间传递数据*/int main()char chN;void count(char c);int i,n;gets(ch);n=strlen(ch);for(i=0;i=0&c=A&c=a&c=z) cnum+;return 0;7. 参考程序如下。#includeint strcmp(char *s1,char *s2)for(;*s1=*s2&*s1&*s2;s1+,s2+); /* 找不同的字符 */return (*s1-*s2);void main()char a10,b10;gets(a);gets(b);printf(%dn,strcmp(a,b
7、);8. 参考程序如下。#include int main(void) float a10;int i=0;double sum = 0.0; float avg = 0.0; for(i=0;i10;i+) printf(请输入第%d个同学的成绩:,i+1); scanf(%f,&ai); printf(n); sum+=ai; avg = sum/10.0; printf(%fn,avg); return 0; 9. 参考程序如下。#include void aa(int *array)int i;for(i=0;i20;i+)scanf(%d,&arrayi);void bb(int *array)int *max,*min,t;int *p;max=min=array;for(p=array;p=array+19;p+)if(*max*p) min=p;t=*max;*max=array19;array19=t;t=*min;*min=array0;array0=t;void cc(int *array)int *p;for(p=array;p=array+19;p+)printf(%d,*p);void main()int number20;aa(number);bb(number);cc(number);10. 运行结果如下:result=14