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

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

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

用户从键盘依次输入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 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?