注册 登录
编程论坛 C++教室

初学者,程序编译没错,但一运行就出现错误,哪里逻辑不通了么,求看QAQ

doris_ 发布于 2014-03-25 23:13, 429 次点击
问题就是用选择法给10个数字排序,下面是程序

#include <iostream>
using namespace std;
int main()
{int a[11];
 int i,j,t;
 cout<<"输入10个数字:"<<endl;
 for(i=1;i<=10;i++)
     cin>>a[i];
     cout<<endl;
 for(i=1;i<=9;i++)
     for(j=i+1;j<=10;j++)
         if(a[i]>a[j])
             t=a[i];
             a[i]=a[j];
             a[j]=t;
 cout<<"排序结果:"<<endl;
 for(i=1;i<=10;i++)
     cout<<a[i]<<" ";
 cout<<endl;
 return 0;
}
3 回复
#2
寂寞的一角钱2014-03-25 23:57
int main()
{
    int a[11];
    int i,j,t;
    cout<<"输入10个数字:"<<endl;
    for(i=1;i<=10;i++)
        cin>>a[i];
     cout<<endl;
    for(i=1;i<=9;i++)
        for(j=i+1;j<=10;j++)
            if(a[i]>a[j]){
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
    cout<<"排序结果:"<<endl;
    for(i=1;i<=10;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    return 0;
}
if 后少了{}
#3
doris_2014-03-26 12:09
回复 2楼 寂寞的一角钱
对哦!!嗷嗷嗷嗷嗷好腻害  谢谢><
#4
liusonglin2014-03-26 17:20
我说你这也不是选择法排序呀!这应该是起泡法排序,

正确的冒泡法排序是下面的程序:
#include <iostream>
using namespace std;
int main()
{
    const int n=10;
    int i,j,k,t,a[n];
    cout<<"请输入十个整数:"<<endl;
    for (i=0;i<n;i++)
        cin>>a[i];
        cout<<endl<<"输入的顺序:"<<endl;
    for (i=0;i<n;i++)
       cout<<a[i]<<" ";
    cout<<endl;
    for (i=0;i<n-1;i++)
    {        k=i;
        for (j=i+1;j<n;j++)
            if (a[k]>a[j])   k=j;
           t=a[i];
           a[i]=a[k];
           a[k]=t;
    }
    cout<<endl<<"从小到大的顺序为:"<<endl;
    for (i=0;i<n;i++)
        cout<<a[i]<<' ';
        cout<<endl;
}
1