m0_63366309 2022-05-29 03:49 采纳率: 57.1%
浏览 157
已结题

使用结构体完成农副产品排序

问题遇到的现象和发生背景

用户从键盘依次输入6种农副产品的信息,编写程序按照销售额由小到大的顺序输出各个农副产品的信息。

要求:
(1)定义农副产品信息的结构体fruitinfo,包括产品编号(正整数),产品名称(由不含空格的26个英文字母的大小写构成,不超过20个字符)、销量及单价,其中销量和单价是浮点数;
(2)定义void set( struct fruitinfo *t )函数,用来输入一种农副产品的数据;
(3)定义void print( struct fruitinfo *t )函数,用来输出一种农副产品的数据(其中浮点数保留小数点后2位);
(4)定义void sortfruit( struct fruitinfo *t )函数,用来对所有农副产品按照销售额(销售额等于单价乘以销量)从小到大排序(销售额相同时保持原来顺序);
(5)在主函数中调用set、sortfruit和print函数。

示例输入
1001 Apple 300.5 2.0
1002 Banana 100.5 3.5
1003 Lemon 205.2 2.5
1004 cherry 70.65 16.2
1005 grape 500.62 6.6
1006 orange 10000.2 5.15

示例输出(各数据项用英文空格隔开,数值数据保留两位小数,每行最后一个数据项没有空格)
1002 Banana 100.50 3.50
1003 Lemon 205.20 2.50
1001 Apple 300.50 2.00
1004 cherry 70.65 16.20
1005 grape 500.62 6.60
1006 orange 10000.20 5.15

问题相关代码,请勿粘贴截图

#include<stdio.h>
#include<stdbool.h>

typedef struct information{
char name[11];
int num;
float n;
float p;
}info;

void set( struct fruitinfo *t )
{
scanf("%d %s %f %f",t->name,t->num,t->n,t->p);
}

void print( struct fruitinfo *t )
{
printf("%d %s %3.2f %-2.2f\n",t->name,t->num,t->n,t->p);
}
void sortfruit(struct fruitinfo *t)
int main()
{

return 0;

}
求和排序部分不会,Moodle上的,不能用受限函数

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

4条回答 默认 最新

  • 关注

    代码及运行结果如下:

    img

    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    
    #define N (int)6
    
    typedef struct fruitinfo{
        int num;
        char name[21];
        
        float n;
        float p;
    }info;
    
    void set( struct fruitinfo *t )
    {
        scanf("%d %s %f %f",&t->num,t->name,&t->n,&t->p);
    }
    
    void print( struct fruitinfo *t )
    {
        printf("%d %s %3.2f %-2.2f\n",t->num,t->name,t->n,t->p);
    }
    void sortfruit(struct fruitinfo *t)
    {
        int i,j;
        int n=N; //6种农副产品
        float tmp1,tmp2;
        struct fruitinfo st;
        for (i=0;i<n-1;i++)
        {
            for (j=0;j<n-1-i;j++)
            {
                tmp1 = t[j].n * t[j].p;
                tmp2 = t[j+1].n * t[j+1].p;
                if(tmp1 > tmp2) //从小到大排序
                {
                    st = t[j];
                    t[j] = t[j+1];
                    t[j+1]= st;
                }
            }
        }
    }
    int main()
    {
        struct fruitinfo a[N];
        int i;
        //输入6种农副产品
        for(i=0;i<6;i++)
            set(&a[i]);
        sortfruit(a);
        for(i=0;i<6;i++)
            print(&a[i]);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 创建了问题 5月29日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)