当我调用该函数然后显示它时,输出与输入相同。程序中没有其他错误,这应该意味着函数中存在一些问题。我只是一个初学者,所以感谢任何帮助。
#include <iostream>
using namespace std;
struct student
{
char name[30];
int marks;
void getinfo()
{
cout<< "Enter your name:\n"; cin>>name;
cout<<"Enter marks:\n"; cin>>marks;
}
void showinfo()
{
cout<<"\nName: "<<name<<endl;
cout<<"Marks: "<<marks<<endl<<endl;
}
};
void bubsort( student S[] , int N)
{
student Temp;
for(int i=0;i<N-1;i++)
for(int j=0;j<N-1-i;j++)
{
if(S[j].name>S[j+1].name)
{
Temp=S[j];
S[j]=S[j+1];
S[j+1]=Temp;
}
}
}
int main()
{
student A[5];
cout<<" Enter details for 5 students:\n";
for( int i=0;i<5;i++)
A[i].getinfo();
bubsort(A,5); //I used the function
cout<<" Sorted information:\n";
for( int j=0;j<5;j++)
A[j].showinfo(); //result is in the same order as input
}
答案 0 :(得分:2)
数组衰减到指针,所以你的比较S[j].name>S[j+1].name
正在比较指针而不是字符串。
如果您想比较字符串,则需要使用std::string
而不是字符数组,或使用strcmp
。