我在结构定义方面遇到问题。我理解语法,但无法正确使用它来制作工作程序。我的任务是定义一种结构类型element_t
来表示元素周期表中的一个元素。组件应包括原子序数、名称、符号、类别、重量和一个七元素整数数组,用于表示每个壳中的电子数。以下是element_t
钠结构的组成部分。
11 Sodium Na alkali_metal 22.9898 2 8 1 0 0 0 0
定义和测试 I/O 功能scan_element
和print_element
. 这是我的代码......但没有工作。我不明白为什么编译器说我没有初始化 element_t。提前致谢。
***以以下代码结束,还添加了适当的循环和 & 符号,尽管它没有在下面显示并且一切正常。我很想知道课堂上的幻灯片是如何使用 {2 8 1 0 0 0 0} 来填充 int 数组而不是循环的。我正在使用的书也使用了循环方法,但我想尝试使用 {} 方法。再次感谢。
#include <stdio.h>
#include <string.h>
typedef struct {
int atomic_num;
char* element_name; revised: char element_name[25];
char* element_symbol; revised: element_symbol[2];
char* element_class; revised: char element_class[25];
double atomic_weight;
int electrons[7];
} element_t;
int scan_element(); revised: element_t scan_element();
void print_element(element_t my_element);
int scan_element() {
element_t my_element;
printf("Enter Atomic Number> ");
scanf("%d", my_element.atomic_num);
printf("Enter Element Name> ");
scanf("%s", my_element.element_name);
printf("Enter Element Symbol> ");
scanf("%s", my_element.element_symbol);
printf("Enter Element Class> ");
scanf("%s", my_element.element_class);
printf("Enter Atomic Weight> ");
scanf("%lf", my_element.atomic_weight);
printf("Enter Electons in each shell> ");
scanf("%d", my_element.electrons);
print_element(my_element);
return 0;
}
void print_element(element_t my_element) {
printf("%d %s %s %s %lf %d \n",my_element.atomic_num,my_element.element_name, my_element.element_symbol,my_element.element_class,my_element.atomic_weight,&my_element.electrons);
}
int main()
{
scan_element(); revised: print_element(scan_element());
return 0;
}