新手!求纠错!解决方案
新手!求纠错!!
/*输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数;①输入10个数;②进行处理;③输出10个数。*/
#include <stdio.h>
void main()
{
void exc (int *p,int n);
void out (int *p,int n);
int a[9],i;
int *p=a;
printf("please enter ten numbers! \n");
for (i=0;i<=9;i++)
scanf("%d",p+i);
exc(p,i-1);
out (p,i-1);
}
void exc(int *p,int n)
{
int max=*p,min=*p,i,m1,m2,t;
for (i=1;i<=n;i++)
{
if(*(p+i)>max) {max=*(p+i);m1=i;}
if(*(p+i)<min) {min=*(p+i);m2=i;}
}
t=*p;*p=*(p+m2);*(p+m2)=t;
t=*(p+i);*(p+i)=*(p+m1);*(p+m1)=t; ---------貌似有问题,不知道怎么改
}
void out(int *p,int n)
{
int i;
for (i=0;i<=n;i++)
printf("%d ",*(p+i));
printf("\n");
}
------解决方案--------------------
int a[9],i;
定义的个数少了,应该是int a[10];
t=*(p+i);*(p+i)=*(p+m1);*(p+m1)=t;改为
t = *(p+i-1); *(p+i-1) = *(p+m1); *(p+m1)=t;
------解决方案--------------------
定义数组时,方括号内的数字表示数组里元素的总量——不是最大下标。
/*输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数;①输入10个数;②进行处理;③输出10个数。*/
#include <stdio.h>
void main()
{
void exc (int *p,int n);
void out (int *p,int n);
int a[9],i;
int *p=a;
printf("please enter ten numbers! \n");
for (i=0;i<=9;i++)
scanf("%d",p+i);
exc(p,i-1);
out (p,i-1);
}
void exc(int *p,int n)
{
int max=*p,min=*p,i,m1,m2,t;
for (i=1;i<=n;i++)
{
if(*(p+i)>max) {max=*(p+i);m1=i;}
if(*(p+i)<min) {min=*(p+i);m2=i;}
}
t=*p;*p=*(p+m2);*(p+m2)=t;
t=*(p+i);*(p+i)=*(p+m1);*(p+m1)=t; ---------貌似有问题,不知道怎么改
}
void out(int *p,int n)
{
int i;
for (i=0;i<=n;i++)
printf("%d ",*(p+i));
printf("\n");
}
------解决方案--------------------
int a[9],i;
定义的个数少了,应该是int a[10];
t=*(p+i);*(p+i)=*(p+m1);*(p+m1)=t;改为
t = *(p+i-1); *(p+i-1) = *(p+m1); *(p+m1)=t;
------解决方案--------------------
定义数组时,方括号内的数字表示数组里元素的总量——不是最大下标。