c语言编程:求大神解答我哪里错了,一直答案错误。

题目描述 Lulu想要买水果,市场有很多水果,价格都不一样,lulu想从最便宜的开始买.请你帮她算一下吧. 输入 第一行是一个整数T(1<=T<=100),表示有T组数据,每组数据第一行为n,有n种水果,接下来有n行,每行有一个水果名字和相应的单位重量价格. 输出 对每组数据,按价格从小到大的顺序输出水果.格式为水果名字和价格. 样例输入 1 3 apple 12 banana 15 pear 8 样例输出 pear 8 apple 12 banana 15
#include<stdio.h>struct Fruit{ char name[1000]; int price;};int main(){ struct Fruit a[1000]; struct Fruit t; int T,n,i,j,l,k; scanf("%d",&T); for(l=0;l<T;l++) { scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s%d",a[i].name,&a[i].price); } for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(a[k].price>=a[j].price) k=j; if(k!=i) {t=a[k];a[k]=a[i];a[i]=t;} } } for(i=0;i<n;i++) { printf("%s %d\n",a[i].name,a[i].price); } } return 1;}

第1个回答  2013-12-18
if(k!=i) {t=a[k];a[k]=a[i];a[i]=t;} 因为t是结构体,不能直接赋值。
写一个swap函数

加一个include
#include <memory.h>

void swap(struct Fruit * l, struct Fruit * r) {
{
struct Fruit t;
memcpy(&t, l, sizeof(struct Fruit));
memcpy(l, r, sizeof(struct Fruit));
memcpy(r, &t, sizeof(struct Fruit));
}本回答被提问者采纳
第2个回答  2013-12-18

你看看吧!希望你学会sort的使用

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
     char s[100];
     int cost;
}a[10000];
bool cmp(node x,node y){return x.cost<y.cost;}
int main()
{
     int n,t;
     scanf("%d",&t);
     while(t--)
     {
          scanf("%d",&n);
          for (int i=0;i<n;i++)
          scanf("%s%d",a[i].s,&a[i].cost);
          sort(a,a+n,cmp);
          for (int i=0;i<n;i++)
          printf("%s %d\n",a[i].s,a[i].cost);
     }
     return 0;
     return 0;
}

相似回答