C语言、;从键盘输入10本书的名字和单价,存入结构数组,输出最贵的书名和单价,最便宜的署名和单价

#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;}

第1个回答  2014-05-13
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct 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("\nInput book's name:");
scanf("%s",books[i].name);
printf("\nInput book's money:");
scanf("%lf",&books[i].money);
}
for(n=0;n<9;n++){
for(j=n+1;j<10;j++)
{
if ( books[n].money < books[j].money)
{
t=books[n];
books[n]=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="" 这种写法 一般编译器 不接受。
我写的简洁。

本回答被提问者采纳
第2个回答  2017-08-11

#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;
}


相似回答