C语言10个数最小数放第一位,最大数放最后一位
C语言10个数最小数放第一位,最大数放最后一位输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:1,输入10个数;2,进行处理;3,输...
C语言10个数最小数放第一位,最大数放最后一位输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:1,输入10个数;2,进行处理;3,输出10个数。用指针。 求我写的这个代码问题在哪?
#include<stdio.h>
int f1(int *p1)
{
int i=0;
for(;i<10;i++,p1++)
scanf("%d",p1);
}
int f2(int *p2)
{
int min,max,i=1,t;
for(;i<10;i++)
{
min=*p2;max=*p2;
if(min>*(p2+i)) {t=min;min=*(p2+i);*(p2+i)=t;}
if(max<*(p2+i)) {t=max;max=*(p2+i);*(p2+i)=t;}
}
t=min;min=*p2;*p2=t;
t=max;max=*(p2+9);*(p2+9)=t;
}
int f3(int *p3)
{
int i=0;
for(;i<10;i++,p3++)
printf("%5d",*p3);
}
main()
{
int a[10],*p;
p=a;
f1(p);
f2(p);
f3(p);
} 展开
#include<stdio.h>
int f1(int *p1)
{
int i=0;
for(;i<10;i++,p1++)
scanf("%d",p1);
}
int f2(int *p2)
{
int min,max,i=1,t;
for(;i<10;i++)
{
min=*p2;max=*p2;
if(min>*(p2+i)) {t=min;min=*(p2+i);*(p2+i)=t;}
if(max<*(p2+i)) {t=max;max=*(p2+i);*(p2+i)=t;}
}
t=min;min=*p2;*p2=t;
t=max;max=*(p2+9);*(p2+9)=t;
}
int f3(int *p3)
{
int i=0;
for(;i<10;i++,p3++)
printf("%5d",*p3);
}
main()
{
int a[10],*p;
p=a;
f1(p);
f2(p);
f3(p);
} 展开
展开全部
把min=*p2;max=*p2;这两句从f2函数中的for-i循环中移动到for-i循环前面,(因为这两句是初始化min和max变量,所以应该放在for-i循环前面.)主要就改这一处,就行了.
完整的最大值最小值排序的C语言程序如下(改动的地方见注释)
#include<stdio.h>
void f1(int *p1) //这里int f1(int *p1)改成 void f1(int *p1)因为没有返回值
{
int i=0;
for(;i<10;i++,p1++)
scanf("%d",p1);
}
void f2(int *p2) //这里int f2(int *p2)改成 void f2(int *p2)因为没有返回值
{
int min,max,i=1,t;
min=*p2;max=*p2;//这里 这两句从for-i循环中移到这里,因为是初始化min和max
for(;i<10;i++)
{
if(min>*(p2+i)) {t=min;min=*(p2+i);*(p2+i)=t;}
if(max<*(p2+i)) {t=max;max=*(p2+i);*(p2+i)=t;}
}
t=min;min=*p2;*p2=t;
t=max;max=*(p2+9);*(p2+9)=t;
}
void f3(int *p3) //这里int f3(int *p3)改成 void f3(int *p3)因为没有返回值
{
int i=0;
for(;i<10;i++,p3++)
printf("%5d",*p3);
}
int main() //这里主函数加返回值
{
int a[10],*p;
p=a;
f1(p);
f2(p);
f3(p);
return 0;//这里返回0表示运行成功
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询