需要使用结构体类型数组来存储和管理某公司的300种产品的信息,包括产品编号、产品名称、单件成本和月产量

wjx 发布于 2023-12-20 626 次阅读


某超市有若干种商品,每种商品的信息包括“编号”“商品名”“单价”“产地”请将这些信息存放在结构体数组中,并使用结构体指针变量编程:根据给定的商品名查找显示商品信息,根据给定的产地查找显示商品信息,计算所有商品的单价之和。

#include <stdio.h>
#include <string.h>  

// 定义商品结构体  
struct Product {
    int id;
    char name[20];
    float abc;
    char place[20];
};

// 定义商品数组和指针变量  
struct Product products[100];
struct Product* p = products;

// 输入商品信息  
void input() {
    int i = 0;
    while (i < 3) {
        printf("请输入商品编号(输入0结束):");
        scanf("%d", &p->id);
        if (p->id == 0) {
            break;
        }
        printf("请输入商品名:");
        scanf("%s", p->name);
        printf("请输入商品单价:");
        scanf("%f", &p->abc);
        printf("请输入商品产地:");
        scanf("%s", p->place);
        p++;
        i++;
    }
}

// 根据商品名查找并显示商品信息  
void findname() {
    char name[20];
    printf("请输入要查找的商品名:");
    scanf("%s", name);
    while (p->id != 0) {
        if (strcmp(name, p->name) == 0) {
            printf("商品编号:%d\n", p->id);
            printf("商品名:%s\n", p->name);
            printf("商品单价:% .2f\n",p->abc);
            printf("商品产地:%s\n", p->place);
            return;
        } 
        p++;
    }
    printf("未找到该商品!\n");
}

// 根据产地查找并显示商品信息  
void findplace() {
    char a[20];
    printf("请输入要查找的产地:");
    scanf("%s", a);
    while (p->id != 0) {
        if (strcmp(a, p->place) == 0) {
            printf("商品编号:%d\n商品名:%s\n商品单价:%.2f\n商品产地:%s\n", p->id, p->name, p->abc, p->place);
            return;
        }
        p++;
    }
    printf("未找到该产地!\n");
}

// 计算所有商品的单价之和并显示结果  
void sum() {
    float sum = 0;
    printf("所有商品的单价之和为:");
    while (p->id != 0) {
        sum += p->abc;
        p++;
    }
    printf("%.2f\n", sum);
}

int main() {
    input(); // 输入商品信息  
    findname(); // 根据商品名查找并显示商品信息  
    findplace(); // 根据产地查找并显示商品信息  
    sum(); // 计算所有商品的单价之和并显示结果  
    return 0;
}