例如给六个数 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;
}
}