用户从键盘依次输入6种农副产品的信息,编写程序按照销售额由小到大的顺序输出各个农副产品的信息。要求:(1)定义农副产品信息的结构体fruitinfo,包括产品编号(正整数),产品名称(由不含空格的26个英文字母的大小写构成,不超过20个字符)、销量及单价,销量和单价时浮点数。(2)定义void set(struct fruitinfo *f)函数,用来输入一种农副产品的数据。(3)定义void print(struct fruitinfo *f)函数,用来输出一种农副产品的数据(其中浮点数保留小数点后两位);(4)定义void sortfruit(struct fruitinfo *t)函数,用来对所有农副产品按照销售额(销售额等于单价乘以销量)从小到大排序(销售额相同时保持原来顺序)(5)在主函数中调用set,sortfruit和print函数。 用c语言
时间: 2023-06-26 20:05:46 浏览: 226
以下是题目要求的程序代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_PRODUCTS 6
struct fruitinfo {
int id;
char name[21];
double sales;
double price;
};
void set(struct fruitinfo *f) {
printf("请输入产品编号:");
scanf("%d", &f->id);
printf("请输入产品名称:");
scanf("%s", f->name);
printf("请输入销量:");
scanf("%lf", &f->sales);
printf("请输入单价:");
scanf("%lf", &f->price);
}
void print(struct fruitinfo *f) {
printf("%d\t%-20s\t%.2lf\t%.2lf\n", f->id, f->name, f->sales, f->price);
}
void sortfruit(struct fruitinfo *t) {
int i, j;
struct fruitinfo temp;
for (i = 0; i < MAX_PRODUCTS - 1; i++) {
for (j = i + 1; j < MAX_PRODUCTS; j++) {
if (t[i].sales * t[i].price > t[j].sales * t[j].price ||
(t[i].sales * t[i].price == t[j].sales * t[j].price && t[i].id > t[j].id)) {
temp = t[i];
t[i] = t[j];
t[j] = temp;
}
}
}
}
int main() {
struct fruitinfo products[MAX_PRODUCTS];
int i;
for (i = 0; i < MAX_PRODUCTS; i++) {
printf("请输入第%d种农副产品的信息:\n", i + 1);
set(&products[i]);
}
sortfruit(products);
printf("编号\t产品名称\t销量\t单价\n");
for (i = 0; i < MAX_PRODUCTS; i++) {
print(&products[i]);
}
return 0;
}
```
程序中使用了冒泡排序对农副产品按照销售额排序,其中销售额等于单价乘以销量。如果销售额相同,则按照产品编号从小到大排序。输出时使用了格式化输出,保留小数点后两位。
阅读全文