#includestruct book{ char name[50]; double money;};int main(void){ int i,j,m,n; struct book books[10],t; for(i=0;i<10;i++){ printf("Input book's name:"); scanf("%s",books[i].name); printf("Input book's money:"); scanf("%lf",&books[i].money); } for(n=0;n<9;n++){ m=n; for(j=n+1;j<10;j++) .money="">books[m].money) m=j; t=books[m]; books[m]=books[j]; books[j]=t; } printf("name\t money\n"); printf("Max:%s\t%.2lf\n",books[0].name,books[0].money); printf("Min:%s\t%.2lf\n",books[9].name,books[9].money); return 0;}
能说说怎么回事么?
追答这一段是数据输入
for(i=0;i<10;i++){
printf("\nInput book's name:");
...
}
这一段是数据按价格排队。
如果后一个价格大于前一个价格,则交换结构。
for(n=0;n<9;n++){
for(j=n+1;j<10;j++)
{
if ( books[n].money < books[j].money) {
交换结构位置;
}}};
排完队后,最小的在 books[0] 里,最大在 books[9] 里
您能说说我的哪里不对么?
追答你写得比较复杂,看不懂。
还有 .money="" 这种写法 一般编译器 不接受。
我写的简洁。
#include<stdio.h>
#include <string.h>
struct book
{
char name[50];
double money;
book& operator =(book& book1){
strcpy(name,book1.name);
money=book1.money;
return *this;
}
bool operator >(book& book1){
if(this->money>book1.money)
return true;
return false;
}
bool operator <(book& book1){
if(this->money<book1.money)
return true;
return false;
}
};
int main(void){
int n,i;
struct book books[10],maxBook,minBook;
for(i=0;i<10;i++){
printf("Input book's name:");
scanf("%s",books[i].name);
printf("Input book's money:");
scanf("%lf",&books[i].money);
}
maxBook=books[0];
minBook=books[0];
for(n=1;n<10;n++){
if(maxBook<books[n])
maxBook=books[n];
if(minBook>books[n])
minBook=books[n];
}
printf("name\t money\n");
printf("Min:%s\t%.2lf\n",minBook.name,minBook.money);
printf("Max:%s\t%.2lf\n",maxBook.name,maxBook.money);
return 0;
}