#include <string.h>
#include <iostream>
using namespace std;
struct BOOK{
char name[51];
float price;
};
void sort(BOOK a[],int n)
{
BOOK tmp;
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-2;j++)
{
if((a[j].price)>(a[j+1].price))
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
if((a[j].price)==(a[j+1].price))
{
int flag=strcmp(a[j].name,a[j+1].name);
if(flag>0)
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}
}
//请在此添加代码,实现书籍数据的输入、排序和输出
/********** Begin *********/
int main()
{
int n;//n-the number of book
cin>>n;
BOOK a[100];
for(int i=0;i<n;i++)
{
cin.getline(a[i].name,51);
cin>>a[i].price;
}
sort(a,n);
for(int i=0;i<n;i++)
{
cout << a[i].price << ", "<< a[i].name <<endl;
}
return 0;
}
/********** End **********/
运行结果:
问题:想知道程序哪里错了,是输入部分的错误吗?正确的程序应该是什么呢?
int main()
{
int n;//n-the number of book
cin >> n;
cin.clear();
cin.sync();
BOOK a[100];
string input;
for (int i = 0; i < n; i++)
{
cin.getline(a[i].name, 51);
cin >> a[i].price;
cin.clear();
cin.sync();
}
sort(a, n);
for (int i = 0; i < n; i++)
{
cout << a[i].price << ", " << a[i].name << endl;
}
return 0;
}