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

帮忙解决一下啊~~

z249250344 发布于 2010-09-21 19:53, 342 次点击
一个简单的程序 就是给是10个人的成绩排序 不知道出了什么毛病 运行不了  
#include<fstream>
using namespace std;

#define N 10

ifstream inf("in1.txt");
ofstream ouf("out1.txt");

struct stu
{
    char name[20];
    int score;
};

int main()
{
    int i,j,temp;
    stu a[10];
    for(i=0;i<N-1;i++)
    inf>>a[i].name>>a[i].score;
    for(i=0;i<N-1;i++)
    for(j=i+1;j<N;j++)
       if(a[j].score>a[i].score)
       {temp=a[i].score;
        a[i].score=a[j].score;
        a[j].score=temp;}
        for(i=0;i<N;i++)
   ouf<<a[i].name<<" "<<a[i].score<<endl;
    }
请大家帮忙检查一下
1 回复
#2
洪溪2010-09-21 22:23
你的第一个循环里的不应是N-1;而是N

我改成这样后可以运行了,你可以拿去参考一下:
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
#define N 3
struct stu
{
    char name[20];
    int score;
};

int main()
{
    int i,j,temp;
    stu a[N];

    for(i=0;i<N;i++)
    {
        cin>>a[i].name;
            cin>>a[i].score;
    }

    for(i=0;i<N-1;i++)
        for(j=i+1;j<N;j++)
            if(a[j].score>a[i].score)
            {
                temp=a[i].score;
                a[i].score=a[j].score;
                a[j].score=temp;
            }
        for(i=0;i<N;i++)
        {
            cout<<a[i].name<<" "<<a[i].score<<endl;
        }
        return 0;
    }


注意第一个和最后一个循环体要加大括号:
1