#c++#在dev运行输出没问题,在OJ上Runtime error,搜索没搜到,所以请各位专家解答!

Mooc北大郭炜 程序与算法(一) 056病人排队习题
问题:在dev上运行且输出正确,但是在OpenJudge上提交就显示Runtime Error

#include
#include
using namespace std;

int main(){
    int n;
    cin>>n;
    string name[n];
    int age[n];
    for(int i=0;i>name[i]>>age[i];
    }
    int count=0;
//首先要将老年人往前提,若是选择排序的话会破化原有的内在顺序,因此遵循冒泡排序
    for(int i=0;iif(age[i]>=60){
//            cout<<"i="<for(int k=i;k>=count;k--){
                string n1=name[k];
                name[k]=name[k-1];
                name[k-1]=n1;
                int a1=age[k];
                age[k]=age[k-1];
                age[k-1]=a1;
            }
            count++;
        }
    }
//    for(int i=0;iname[i]<for(int i=0;ifor(int j=i;j-1-i;j++){
            if(age[j]1]){
                string n1=name[j];
                name[j]=name[j+1];
                name[j+1]=n1;
                int a1=age[j];
                age[j]=age[j+1];
                age[j+1]=a1;
            }
        } 
    } 
    for(int i=0;iname[i]<return 0;
} 


#include <iostream>
using namespace std;
#define intMax 101
#define charMax 11
 
//定义病人的结构体 
typedef struct patient{
    char name[charMax];
    int age;
}patient;
 
patient p[intMax];//声明一个数组存放病人 
int n;//病人个数 
 
void input(void);
void sort(void);
void output(void);
 
int main(){
    input();
    sort();
    output();
    return 0;
}
 
//输入
void input(){
    cin >> n;
    for(int i = 0;i < n; i++){
        cin >> p[i].name >> p[i].age; 
    }
}
 
//病人排序
void sort(){
    patient temp ;
    int count = 0;//交换的老年人的个数 
    //1.先把老人都提到前面 (结果:老人和非老人各自之间都是按登记的顺序)
    for(int i = 0;i < n;i++){
        if(p[i].age>=60){
            for(int j = i;j>count;j--){
                temp = p[j];
                p[j] = p[j-1];
                p[j-1] = temp;
            }
            count++; 
        } 
    }
//    cout << "count = " <<count<<endl;
    //2.再把前面的老人按年龄排序
    for(int i = 0;i < count ;i++){
        for(int j = 0;j<count - 1 - i;j++){
            if(p[j].age < p[j+1].age){
                temp = p[j];
                p[j] = p[j+1];
                p[j+1] = temp;
            }
        }
    } 
    
} 
 
//输出
void output(){
    for(int i = 0;i < n;i++){
        cout << p[i].name << endl;
    }
} 
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^