题目:某商城仓库中各种商品信息用如下结构体表示: struct Goods { char name[20]; //名称 char grade; //等级(用A/B/C等大写字母表示) double price; //单价 int storage; //存储量 }; 请补充完成函数: char *findGoods(Goods goodsList[], int num, char g); 其中goodsList为所有商品信息构成的数组,num为商品种类数量, g为商品等级。要求实现功能:找到仓库中等级为g的总价值最大 的商品,并返回其名称。 说明:仓库中所有商品的总价值都不相同,且至少存在一种等级为g的商品。
时间: 2024-04-14 09:27:22 浏览: 46
```c
#include <string.h>
char *findGoods(Goods goodsList[], int num, char g) {
double maxPrice = 0;
char *maxPriceName = NULL;
for (int i = 0; i < num; i++) {
if (goodsList[i].grade == g && goodsList[i].price > maxPrice) {
maxPrice = goodsList[i].price;
maxPriceName = goodsList[i].name;
}
}
return maxPriceName;
}
```
这个函数会遍历仓库中所有商品,找到等级为g的商品中单价最高的商品,并返回其名称。
相关问题
使用c++代码完成下述问题某商城仓库中各种商品信息用如下结构体表示: struct Goods { char name[20]; //名称 char grade; //等级(用A/B/C等大写字母表示) double price; //单价 int storage; //存储量 }; 请补充完成函数: char *findGoods(Goods goodsList[], int num, char g); 其中goodsList为所有商品信息构成的数组,num为商品种类数量, g为商品等级。要求实现功能:找到仓库中等级为g的总价值最大 的商品,并返回其名称。 说明:仓库中所有商品的总价值都不相同,且至少存在一种等级为g的商品。
以下是使用C++完成的代码,实现了函数`findGoods`的功能:
```cpp
#include <iostream>
#include <cstring>
struct Goods {
char name[20]; //名称
char grade; //等级(用A/B/C等大写字母表示)
double price; //单价
int storage; //存储量
};
char* findGoods(Goods goodsList[], int num, char g) {
double maxTotalValue = 0.0;
char* maxTotalValueName = nullptr;
for (int i = 0; i < num; i++) {
if (goodsList[i].grade == g) {
double totalValue = goodsList[i].price * goodsList[i].storage;
if (totalValue > maxTotalValue) {
maxTotalValue = totalValue;
maxTotalValueName = goodsList[i].name;
}
}
}
return maxTotalValueName;
}
int main() {
// 创建商品数组
Goods goodsList[5];
// 填充商品信息
strcpy(goodsList[0].name, "商品1");
goodsList[0].grade = 'A';
goodsList[0].price = 10.0;
goodsList[0].storage = 100;
strcpy(goodsList[1].name, "商品2");
goodsList[1].grade = 'B';
goodsList[1].price = 15.0;
goodsList[1].storage = 200;
strcpy(goodsList[2].name, "商品3");
goodsList[2].grade = 'A';
goodsList[2].price = 20.0;
goodsList[2].storage = 150;
strcpy(goodsList[3].name, "商品4");
goodsList[3].grade = 'C';
goodsList[3].price = 12.5;
goodsList[3].storage = 120;
strcpy(goodsList[4].name, "商品5");
goodsList[4].grade = 'A';
goodsList[4].price = 18.0;
goodsList[4].storage = 180;
// 调用函数查找等级为'A'的总价值最大的商品
char* result = findGoods(goodsList, 5, 'A');
// 打印结果
std::cout << "等级为'A'的总价值最大的商品名称:" << result << std::endl;
return 0;
}
```
在该代码中,我们定义了一个`Goods`结构体来表示商品的信息。然后,实现了函数`findGoods`来找到仓库中等级为g的总价值最大的商品,并返回其名称。
在`main`函数中,我们创建了一个包含5种商品的数组,并填充了商品的信息。然后,调用`findGoods`函数查找等级为'A'的总价值最大的商品,并打印结果。
注意:在实际使用中,应该根据具体需求进行适当的修改和错误处理。
typedef struct school { int num; //学校编号 char name[20]; //学校名称 int sc
typedef struct school {
int num; // 学校编号
char name[20]; // 学校名称
int score; // 学校分数
} School;
在这段代码中,我们使用了typedef关键字来定义一个名为School的结构体类型。结构体中有三个成员变量。第一个成员变量num表示学校编号,是一个整数类型。第二个成员变量name表示学校名称,是一个字符数组类型,长度为20。第三个成员变量score表示学校分数,也是一个整数类型。
通过typedef关键字的使用,我们可以直接使用School来声明结构体变量,而不需要再使用struct关键字。例如,我们可以使用以下代码声明一个School类型的结构体变量:
School mySchool;
接下来,我们可以对mySchool的成员变量进行赋值和访问操作。例如,我们可以使用以下代码给mySchool的成员变量赋值:
mySchool.num = 1;
strcpy(mySchool.name, "ABC学校");
mySchool.score = 90;
我们也可以使用以下代码访问mySchool的成员变量并打印出来:
printf("学校编号:%d\n", mySchool.num);
printf("学校名称:%s\n", mySchool.name);
printf("学校分数:%d\n", mySchool.score);
通过typedef关键字的使用,我们可以简化对结构体类型的声明和使用,使代码更加清晰和易读。
阅读全文