稀土元素因其独特的物理和化学性质,在电子、新能源等领域有着广泛应用。本文将通过 C 语言实现一个简易的稀土元素信息管理系统,展示如何用结构体、数组和基本算法来管理稀土元素数据。
系统设计思路
我们将实现以下功能:
- 定义稀土元素的数据结构(包含名称、符号、原子序数、发现年份等信息)
- 初始化常见稀土元素数据
- 实现元素信息的查询(按名称或原子序数)
- 显示所有稀土元素的基本信息
代码实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 定义稀土元素结构体
typedef struct {
char name[20]; // 元素名称
char symbol[5]; // 元素符号
int atomic_number; // 原子序数
float atomic_weight; // 原子量
int discovery_year; // 发现年份
char usage[100]; // 主要用途
} RareEarthElement;
// 初始化稀土元素数据
void initElements(RareEarthElement elements[], int *count) {
// 常见稀土元素数据
RareEarthElement data[] = {
{"镧", "La", 57, 138.9055, 1839, "用于制造特种合金、催化剂"},
{"铈", "Ce", 58, 140.116, 1803, "用于玻璃抛光、汽车尾气催化剂"},
{"镨", "Pr", 59, 140.9077, 1885, "用于制造高强度磁铁、激光材料"},
{"钕", "Nd", 60, 144.24, 1885, "用于制造强磁铁、激光设备"},
{"钐", "Sm", 62, 150.36, 1879, "用于制造永久磁铁、核反应堆控制棒"},
{"铕", "Eu", 63, 151.964, 1896, "用于制造红色荧光粉、激光材料"},
{"钆", "Gd", 64, 157.25, 1880, "用于核磁共振成像、磁制冷材料"},
{"镝", "Dy", 66, 162.50, 1886, "用于制造高矫顽力磁铁、激光材料"}
};
*count = sizeof(data) / sizeof(data[0]);
memcpy(elements, data, sizeof(data));
}
// 按名称查询元素
RareEarthElement* findByName(RareEarthElement elements[], int count, const char* name) {
for (int i = 0; i < count; i++) {
if (strcmp(elements[i].name, name) == 0) {
return &elements[i];
}
}
return NULL;
}
// 按原子序数查询元素
RareEarthElement* findByAtomicNumber(RareEarthElement elements[], int count, int num) {
for (int i = 0; i < count; i++) {
if (elements[i].atomic_number == num) {
return &elements[i];
}
}
return NULL;
}
// 显示元素详细信息
void printElement(RareEarthElement* elem) {
if (elem == NULL) {
printf("未找到该元素信息\n");
return;
}
printf("名称: %s\n", elem->name);
printf("符号: %s\n", elem->symbol);
printf("原子序数: %d\n", elem->atomic_number);
printf("原子量: %.4f\n", elem->atomic_weight);
printf("发现年份: %d\n", elem->discovery_year);
printf("主要用途: %s\n\n", elem->usage);
}
// 显示所有元素列表
void printAllElements(RareEarthElement elements[], int count) {
printf("===== 稀土元素列表 =====\n");
for (int i = 0; i < count; i++) {
printf("%d. %s(%s) - 原子序数: %d\n",
i+1,
elements[i].name,
elements[i].symbol,
elements[i].atomic_number);
}
printf("========================\n\n");
}
int main() {
RareEarthElement elements[20]; // 存储稀土元素
int count; // 元素数量
// 初始化数据
initElements(elements, &count);
// 演示功能
printAllElements(elements, count);
// 查询示例
printf("查询 '钕' 的信息:\n");
RareEarthElement* nd = findByName(elements, count, "钕");
printElement(nd);
printf("查询原子序数为63的元素:\n");
RareEarthElement* eu = findByAtomicNumber(elements, count, 63);
printElement(eu);
return 0;
}
代码解析
- 数据结构设计:使用
RareEarthElement结构体存储稀土元素的关键信息,包括名称、符号、原子序数等核心属性。 - 数据初始化:
initElements函数初始化了 8 种常见稀土元素的数据,实际应用中可以扩展更多元素。 - 查询功能:实现了两种查询方式(按名称和按原子序数),通过遍历数组进行匹配查找。
- 信息展示:提供了单个元素详细信息和所有元素列表的展示功能,方便用户查看。
扩展方向
该系统可以进一步扩展:
- 添加元素数据的增删改功能
- 实现按用途分类查询
- 将数据存储到文件中,实现持久化管理
- 增加排序功能(按原子序数或发现年份等)
通过这个简单的例子,我们展示了如何用 C 语言的基础语法来解决实际问题,也让我们对稀土元素有了更系统的认识。稀土作为重要的战略资源,其合理开发和利用对科技发展有着重要意义。