C++ 编程输入8个正整数,然后用冒泡排序法自动按从小到大的顺序输出. 急急急!!!

如题所述

#include <stdio.h>
int mian()
{
int a[100], i, j, t, n;
scanf("%d", &n);// 输入一个数n,表示接下来有n个数
for (i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
// 冒泡排序的核心部分
for (i = 1; i <= n - 1; i++)// n个数排序,只用进行n-1次
{
for (j = 1; j <= n - i; j++)// 从第1位开始比较直到最后一个尚未归位的数
{
if (a[j] < a[j + 1])
{
t = a[j];
a[j] = a[i];
a[i] = t;
}
}
}
for (i = 1; i <= n; i++)// 输出结果
{
printf("%d", a[i]);
}
system("pause");
return 0;
}

追问

编译时,第27行19列有错

追答

那你把这行去掉不就行了,替换成getchar();

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-02-09
void bubbleSort(int arr[],int n)
{
    int i,j,t;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
            if(arr[j+1]<arr[j])
            {
                t=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=t;
             }
        }
    }
}

第2个回答  2017-02-09
#include <iostream>

using namespace std;

int main()
{
    int arr[8];
    for (int i=0;i<8;++i)
    {
        cin>>arr[i];
    }

    for(int i=0;i<8;++i)
    {
        for(int j=0;j<8-i;++j)
        {
            if(arr[j]>arr[j+1])
            {
                int tmp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=tmp;
            }
        }
    }

    for(int i=0;i<8;++i)
        cout<<arr[i]<<endl;

    return 0;
}

追问

能不能输出的在一行上,不要一行一个,实在不行也没关系,最好一行输入一行输出

追答#include <iostream>

using namespace std;

int main()
{
    int arr[8];
    cin>>arr[7]>>arr[6]>>arr[5]>>arr[4]>>arr[3]>>arr[2]>>arr[1]>>arr[0];

    for(int i=0;i<8;++i)
    {
        for(int j=0;j<8-i;++j)
        {
            if(arr[j]>arr[j+1])
            {
                int tmp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=tmp;
            }
        }
    }

    for(int i=0;i<8;++i)
        cout<<arr[i]<<"  ";

    cout<<endl;
    return 0;
}

追问

谢谢。再问你一题:
C++:将a数组中最后一个元素移到数组最前面,其余数据一次往后平移一个位置。

追答#include <iostream>

using namespace std;

void movelast(int* argarr,int length)
{
    int tmp=argarr[length-1];
    for(int i=length-2;i>=0;--i)
    {
        argarr[i+1]=argarr[i];
    }
    argarr[0]=tmp;
}
int main()
{
    int arr[8];
    cin>>arr[0]>>arr[1]>>arr[2]>>arr[3]>>arr[4]>>arr[5]>>arr[6]>>arr[7];

    movelast(arr,8);

    for(int i=0;i<8;++i)
        cout<<arr[i]<<" ";
    cout<<endl;
    return 0;
}

本回答被提问者采纳
相似回答