输入某产品的价格信息(包括:名称、等级、产地、价格等),按等级统计产品价格的平均值、中位数等统计量。 要求:结构体变量+指针 用C语言编程
时间: 2024-09-15 08:09:14 浏览: 59
农产品-_农产品价格_农产品_网页_
在C语言中,为了实现这个功能,我们可以定义一个结构体(struct)来存储产品的相关信息,并使用指针来管理这些结构体数组。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
// 定义产品信息的结构体
typedef struct {
char name[50];
char grade[10]; // 等级
char origin[50]; // 产地
float price; // 价格
} Product;
// 计算价格的平均值和中位数
void calculate_stats(Product* products, int num_products) {
float sum = 0;
for (int i = 0; i < num_products; i++) {
sum += products[i].price;
}
float avg_price = sum / num_products;
// 对产品价格进行排序(这里我们仅展示如何通过冒泡排序,实际应用中可以使用更高效的方法)
for (int i = 0; i < num_products - 1; i++) {
for (int j = 0; j < num_products - 1 - i; j++) {
if (products[j].price > products[j + 1].price) {
Product temp = products[j];
products[j] = products[j + 1];
products[j + 1] = temp;
}
}
}
// 找到中位数
float median;
if (num_products % 2 == 0) {
median = (products[(num_products / 2) - 1].price + products[num_products / 2]). / 2;
} else {
median = products[num_products / 2].price;
}
printf("平均价格: %.2f\n", avg_price);
printf("中位数价格: %.2f\n", median);
}
int main() {
Product* products = malloc(sizeof(Product) * 5); // 假设有5个产品
// 初始化产品信息...
products[0].name = "产品A";
products[0].grade = "一级";
products[0].origin = "产地A";
products[0].price = 100.00;
// ... 其他产品类似
int num_products = sizeof(products) / sizeof(products[0]);
calculate_stats(products, num_products);
free(products); // 释放内存
return 0;
}
```
在这个示例中,`calculate_stats`函数接收指向产品数组的指针以及产品数量,然后计算并打印出平均价和中位数。注意,此代码只是一个基本的演示,实际项目中需要处理用户输入或动态分配内存。
阅读全文