c语言编程 输入一个正整数n(1<n《10),再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,

#include<stdio.h>
int main()
{
int a[10];
int i,max,min,n;
printf("请输入一个正整数n(1<n<10)\n");
scanf("%d",&n);
printf("请输入n个正整数\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("\n");
max=min=a[0];
for(i=0;i<n;i++)
{
if(a[i]<max)
max=a[i];
if(a[i]>min)
min=a[i];
}
a[0]=max;
a[n-1]=min;
for(i=0;i<n;i++)
printf("%d\n",a[i]);
return 0;
}

为啥不对

这题目应该找到最大值和最小值所在的坐标位置,然后,在交换时,要考虑最大值是第一个数的情况。

#include<stdio.h>
int main()
{
        int a[10];
        int i,max,min,n;
        printf("请输入一个正整数n(1<n<10)\n");
        scanf("%d",&n);
        printf("请输入n个正整数\n");
        for(i=0;i<n;i++)
                scanf("%d",&a[i]);
        printf("\n");
        max=min=0;
        for(i=0;i<n;i++)
        {
                if( a[i] > a[max] )
                        max=i;
                if(a[i] < a[min] )
                        min=i ;
        }
        //交换 最小值
        i=a[0];
        a[0]=a[min];
        a[min]=i;
        if ( max==0 ) //判断最大值位置,当是0位时,这时,已变到 min位置
                max=min;
        //交换最大值
        i=a[n-1];
        a[n-1]=a[max];
        a[max]=i;

        for(i=0;i<n;i++)
                printf("%d\n",a[i]);
        return 0;
}

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-11
大于与小于搞反了,错误代码如下:
for(i=0;i<n;i++)
{
if(a[i]>max) /*这里用>*/
max=a[i];
if(a[i]<min) /*这里用<*/
min=a[i];
}本回答被网友采纳
相似回答