shunfurh
编程介的小学生
采纳率92.7%
2019-02-20 00:21 阅读 815

输入n(n<100)个数,将它与最前面的数交换后输出这些数。如何运用通过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条回答 默认 最新

  • jiang2012yun 走向人生巅峰的雲瑞 2019-02-21 10:19

    交换是 从小到大排序吗?那1 4 3 2 5 又是什么意思

    点赞 评论 复制链接分享
  • qq_40625778 C you again 2019-02-21 12:01

    菜鸟

    #include<stdio.h>
    
    void fun(int arr[][100],int i,int n)
    {
        int j;
        int temp=arr[i][0];
        int index=0;
        for(j=1;j<n;j++)
        {
            if(arr[i][j]<=arr[i][index]) index=j;
        }
        arr[i][0]=arr[i][index];
        arr[i][index]=temp;
    }
    int main()
    {
        int n;
        int i=0;
        int j;
        int arr[100][100];
        int temp[100];
        int t=0;
        while(scanf("%d",&n)!=EOF&&n!=0)
        {
           temp[t++]=n;
           for(j=0;j<n;j++)
           {
               scanf("%d",&arr[i][j]);
           }
           fun(&arr,i,n);
           i++;
        }
        int k;
        int l=0;
        for(k=0;k<i;k++)
        {
            for(j=0;j<temp[l];j++)
            {
               if(j==temp[l]-1) printf("%d\n",arr[k][j]);
               else printf("%d ",arr[k][j]);
            }
            l++;
        }
        return 0;
    }
    
    
    点赞 评论 复制链接分享

相关推荐