#define MAXNUM 20 #include<stdio.h> void Create(int x[],int n){ int i; printf("Please input n="); scanf("%d",&n); printf("Please input %d data:",n); for(i=0;i<n;i++) scanf("%d",&x[i]); } /*void Maxmin(int x[],int n,int *Max,int *Min){ *Max=*Min=x[1]; for(int i=2;i<=n;i++){ if(x[i]>*Max)*Max=x[i]; if(x[i]<*Min)*Min=x[i]; } }*/ int main(){ int a[MAXNUM+1]; int max,min; int i,n; Create(a,n); for(i=0;i<n;i++)printf("%d ",a[i]); /* Maxmin(a,n,&max,&min); printf("\nmax=%d min=%d",max,min);*/ return 0; }
运行上述程序
Please input n=3
Please input 3 data:1 2 3
1 2 3 2009275112 2293596 2009111904 8 2009091631 2009091625 4 37812200 0 4199376。。。
请按任意键继续. . .
注:程序执行create(a,n)之后,n的值并没有赋给for循环里面的n
此处设置加段程序printf("此时的n=%d \n",n);即可看出n由程序随机分配的数值。
下段程序使用了指针变量作为函数参数后就能避免上述问题,执行create程序后n被赋值
#define MAXNUM 20 #include<stdio.h> void Create(int x[],int *n){ int i; printf("Please input n="); scanf("%d",&*n); printf("Please input %d data:",*n); for(i=0;i<*n;i++) scanf("%d",&x[i]); } /*void Maxmin(int x[],int n,int *Max,int *Min){ *Max=*Min=x[1]; for(int i=2;i<=n;i++){ if(x[i]>*Max)*Max=x[i]; if(x[i]<*Min)*Min=x[i]; } }*/ int main(){ int a[MAXNUM+1]; int max,min; int i,n; Create(a,&n);//此时的n是指针变量 printf("此时的n=%d \n",n); for(i=0;i<n;i++)printf("%d ",a[i]); /* Maxmin(a,n,&max,&min); printf("\nmax=%d min=%d",max,min);*/ return 0; }
运行上述程序
Please input n=3
Please input 3 data:1 2 3
此时的n=3
1 2 3 请按任意键继续. . .