一个缠绕了我前年怒火的问题,请各位帮忙降降温!先谢过!
题目:输入十个整数,将其中最小的数与第一个数对换,把最大的数和最后一个数对换。#include<stdio.h>
int f(int x[],int n)
{
int i,j,k,v,*p,*q;
j=k=x[0];
for(i=0;i<n;i++)
{
if(k<x[i])
{k=x[i];p=&k;}
else if(j>x[i])
{j=x[i];q=&j;}
}
v=x[n-1];x[n-1]=*p;*p=v;
v=x[0];x[0]=*q;*q=v;
printf("%d ,%d\n",x[0],x[n-1]);
}
main()
{
int i,array[10];
printf("\nplease input the array:\n");
for(i=0;i<10;i++)
scanf("%d",&array[i]);
printf("the array after deal:\n");
f(array,10);
for(i=0;i<10;i++)
printf("%4d",array[i]);
getch();
}
程序貌似没有错误,但是结果却令我大吃一惊!
输出结果如下,输入十个数字:5 2 8 4 6 9 3 0 7 1
输出最大最小值:0,9
处理后的数字序列为:0 2 8 4 6 9 3 0 7 9。最大数和最小数输出了两次,第一个数和最后一个数被最大最小数覆盖,并没有在数列中输出,这是为何,我的程序中哪里出了问题,请大家指教,不胜感激,谢谢!