给一组数字,如何把最小的数字放在第一位,其他数字顺序不变,?用c语言写

例如给六个数 6 5 9 4 1 2

输出的结果为 1 6 5 9 4 2 

望解答。

最小值全部前置:就用一个数组存写入值,循环找出最小值和最小值min的个数,最先输出最小个最小值min,再依次输出数组里的值,遇到最小值跳过;

最小值只前置一个:用一个数组存写入值,循环找出最小值min,先输出最小值min,在依次输出数组,输出值到min的时候跳过输出,再把min减去1

最小值全部前置:

#include<iostream>
#include<vector>
using namespace std;

int main(){
	vector<int> vnumber;
	int number;
	while (1){
		cin >> number;
		vnumber.push_back(number);//每输入一个数字就把它添加到数组的最后
		if (cin.get() == '\n')//如果是回车符则跳出循环
			break;
	}
	int *num = new int[vnumber.size()];
	if (!vnumber.empty()){
        memcpy(num, &vnumber[0], vnumber.size()*sizeof(int));
    }
    int length = vnumber.size();
    int min=num[0];
    int count=0;
    for(int i=1;i<length;i++){
    	if(min>num[i]){
    		min=num[i];
		}
	}
	for(int i=0;i<length;i++){
    	if(min==num[i]){
    		count++;
		}
	}
	for(int i=0;i<count;i++){
		cout << min << " ";
	}
	for(int i=0;i<length;i++){
    	if(min==num[i]){
    		continue;
		}
		cout << num[i] << " ";
	}
}

 

 

我又想到一个,如果输出结果为1 5 9 4 6 2 呢?只交换1和6的位置,思路是什么呢?望大佬解答,笔者在此先谢过了

/*输入一个整数将其倒着输出,如54321——12345。*/

#include<stdio.h>

int main()

{

 int i, t;

 printf("请输入一个整数:\n");

 scanf_s("%d", &i);

 while (i != 0)

 {

  t = i % 10;

  printf("%d ", t);

  i /= 10;

 }

}