你上面的shurn函数里用new创建了两个结构体变量后面又释放了,此时当调用bijiao函数时又创建两个变量又没有赋值就冒泡排序,我又点不知道是什么程序了,但感觉你的有点语法错误,对于变量应用“.”点来访问成员,对于指针应用“->”前头来访问。
这是我改的,还不知道合不合你的题意,至少编译通过(Dev-Cpp)!
#include
using namespace std;
struct sc {
int sno;
char sname[20];
int grade1;
int grade2;
int grade3;
};
sc *s; //全局指针
sc *shuru(int n){
s=new sc[n];
for(int i=0;i cout<<"enter:";
cin>>(s+i)->sno
>>(s+i)->sname
>>(s+i)->grade1
>>(s+i)->grade2
>>(s+i)->grade3;
}
} //输入数据
void bijiao(int n){
for(int l=0;l for(int i=n-1;i>l;i--)
if((s+i)->grade1<(s+i-1)->grade1){
sc t;
t=*(s+i);
*(s+i)=*(s+i-1);
*(s+i-1)=t;
}
}
for(int j=0;j cout<<(s+j)->sno
<<(s+j)->sname
<<(s+j)->grade1
<<(s+j)->grade2
<<(s+j)->grade3
< } //按有小到大输出
}
int main(void){
shuru(2);
bijiao(2);
delete []s;
system("pause");
return 0;
}
//(DNM)
--------------------next---------------------
#include
using namespace std;
struct sc {
int sno;
char sname[20];
int grade1;
int grade2;
int grade3;
};
sc *s; //全局指针
sc *shuru(int n){
s=new sc[n];
for(int i=0;i cout<<"enter:";
cin>>(s+i)->sno
>>(s+i)->sname
>>(s+i)->grade1
>>(s+i)->grade2
>>(s+i)->grade3;
}
} //输入数据
void bijiao(int n){
for(int l=0;l for(int i=n-1;i>l;i--)
if((s+i)->grade1<(s+i-1)->grade1){
sc t;
t=*(s+i);
*(s+i)=*(s+i-1);
*(s+i-1)=t;
}
}
for(int j=0;j cout<<(s+j)->sno<<'\t'
<<(s+j)->sname<<'\t'
<<(s+j)->grade1<<'\t'
<<(s+j)->grade2<<'\t'
<<(s+j)->grade3
< } //按有小到大输出
}
int main(void){
shuru(2);
bijiao(2);
delete []s;
system("pause");
return 0;
}
我对这个程序测试时,输入的是:1 XiaoHong 1 1 1
2 XiaoMing 2 2 2
输入时应该对应cin传入数据类型。
我用Dev-Cpp试过这个程序有输出!
--------------------next---------------------
阅读(1394) | 评论(0) | 转发(0) |