编程介的小学生
2019-03-17 22:33
采纳率: 92.5%
浏览 836

找出输入数组最小的数,将它与最前面的数交换后输出用C语言的办法实现

Problem Description
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。

Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。

Output
对于每组输入数据,输出交换后的数列,每组输出占一行。

Sample Input
4 2 1 3 4
5 5 4 3 2 1
0

Sample Output
1 2 3 4
1 4 3 2 5

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_41968547 2019-03-18 20:14

    #include

    int main()
    {
    int n;
    while(scanf("%d",&n )&&n!=0)
    {
    int a[100];
    scanf("%d",&a[0]);
    int temp=a[0];
    int index=0;//最小值的下标
    for(int i=1;i {
    scanf("%d",&a[i]);
    if(temp>a[i])
    {
    temp=a[i];
    index=i;

    }

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

    }

    评论
    解决 无用
    打赏 举报
  • a81836620 2019-03-25 17:16
    #include "stdio.h"
    int main()
    {
        int a[100];
        int n,i,t;
        while(scanf("%d",&n)&&n!=0){
            scanf("%d",&a[0]);
            t = 0; //最小数下标
            for(i=1;i<n;i++){//输入同时找到最小数 
                scanf("%d",&a[i]);
                if(a[i]<a[t]){
                    t = i;
                }
            }
            //交换两个值
            a[0] = a[0] + a[t];
            a[t] = a[0] - a[t];
            a[0] = a[0] - a[t];
            for (i = 0; i < n; ++i)
            {
                printf("%d ",a[i]);
            }
            printf("\n");
        }
        return 0;
    }
    
    评论
    解决 无用 1
    打赏 举报