永发信息网

c语言指针问题,帮忙找出错的地方(出错的大概位置是处理函数的那一段)

答案:3  悬赏:40  手机版
解决时间 2021-05-05 11:58
  • 提问者网友:眉目添风霜
  • 2021-05-04 23:33

函数的目的把最大和第一个交换,最小的和最后一个交换

#include<stdio.h>
void input(int num[]);
void handle(int *p);
void output(int num[]);
void main()
{
int num[10];
input(num);
handle(num);
output(num);

}

void input(int num[])
{
int i;
printf("请输入十个不同数(用空格隔开,不超过5位):\n");
for(i=0;i<=9;i++)
{
scanf("%d",&num[i]);
printf("%d ",num[i]);
}
}

void handle(int *p)
{
int max=*p;
int min=*p;
int i,temp;
for(i=1;i<=9;i++)
{
if(*(p+i)>max)
max=*(p+i);
if(*(p+i)<min)
min=*(p+i);
}
for(i=0;i<=9;i++)
{
if(max==*(p+i));
{
temp=*p;
*(p+i)=*p;
*p=temp;
printf("%d",*p);
}

if(min==*(p+i));
{
temp=*(p+9);
*(p+9)=*(p+i);
*(p+i)=temp;
}

}
}

void output(int num[])
{
int i;
printf("输出的10个数为:\n");
for(i=0;i<=9;i++)
printf("%d ",num[i]);
printf("\n");

}

最佳答案
  • 五星知识达人网友:酒醒三更
  • 2021-05-05 01:00

帮你改好了. 你看看:


#include<stdio.h>
void input(int num[]);
void handle(int *p);
void output(int num[]);
void main()
{
int num[10];
input(num);
handle(num);
output(num);

}

void input(int num[])
{
int i;
printf("请输入十个不同数(用空格隔开,不超过5位):\n");
for(i=0;i<=9;i++)
{
scanf("%d",&num[i]);
printf("%d ",num[i]);
}
}

void handle(int *p)
{
int max=*p;
int min=*p;
int i,temp;
for(i=1;i<=9;i++)
{
if(*(p+i)>max)
max=*(p+i);
if(*(p+i)<min)
min=*(p+i);
}
for(i=0;i<=9;i++)
{
if(max == *(p+i)) //多了分号!
{
temp=*p;
*p=*(p+i); //错误!,应该将*(p+i)给*p.
*(p+i)=temp; //将temp给*(p+i).
}

if(min==*(p+i)) //多了分号;
{
temp=*(p+9);
*(p+9)=*(p+i);
*(p+i)=temp;
}

}
}

void output(int num[])
{
int i;
printf("输出的10个数为:\n");
for(i=0;i<=9;i++)
printf("%d ",num[i]);
printf("\n");

}

全部回答
  • 1楼网友:从此江山别
  • 2021-05-05 02:47

//函数的目的把最大和第一个交换,最小的和最后一个交换

#include<stdio.h> void input(int num[]); void handle(int *p); void output(int num[]); void main() { int num[10]; input(num); handle(num); output(num);

} void input(int num[]) { int i; printf("请输入十个不同数(用空格隔开,不超过5位):\n"); for(i=0;i<=9;i++) { scanf("%d",&num[i]); printf("%d ",num[i]); } } void handle(int *p) { int max=*p; int min=*p; int i,temp; for(i=1;i<=9;i++) { if(*(p+i)>max) max=*(p+i); if(*(p+i)<min) min=*(p+i); } printf( "max = %d,min = %d\n", max, min); for(i=0;i<=9;i++) { if(max==*(p+i)) //以前多了个分号 { temp=*(p+i); *(p+i)=*p; *p=temp; // 以前你是这样的temp=*p;*(p+i)=*p;*p=temp;

}

if( min == *(p+i)) //以前多了个分号 { temp = *(p+9);*(p+9)=*(p+i);*(p+i)=temp; } } } void output(int num[]) { int i; printf("输出的10个数为:\n"); for(i=0;i<=9;i++) printf("%d ",num[i]); printf("\n");

}

  • 2楼网友:神也偏爱
  • 2021-05-05 02:30
我刚回答了一个类似的问题, http://wenwen.soso.com/z/q168938845.htm
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯