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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯