gpt4 book ai didi

c - 单元化结构定义

转载 作者:行者123 更新时间:2023-11-30 20:41:33 26 4
gpt4 key购买 nike

我在结构定义方面遇到问题。我理解语法,但无法正确使用它来编写工作程序。我的任务是定义一个结构类型 element_t代表元素周期表的元素之一。组件应包括原子序数、名称、符号、类别、重量以及每个壳层中电子数量的七元素整数数组。以下是 element_t 的组件钠的结构。

11 Sodium Na alkali_metal 22.9898 2 8 1 0 0 0 0

定义和测试 I/O 函数 scan_elementprint_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;
}

最佳答案

我发现您的代码中存在一些问题:

1)使用scanf读取非指针类型(如int或float)时,使用&运算符。 Scanf 需要一个指向变量的指针,而不是变量本身。

2)如果您将字符串声明为动态字符串 (char*),请务必使用 malloc 为它们分配内存。否则静态声明它们,如 char my_string[30]。

3)你的scan_element函数应该返回一个element_t结构,而不是一个int。或者,您可以将指针传递给现有的 element_t 结构并在函数中修改它。

4) 不能直接使用 scanf/printf 读取/打印 int 数组。每个元素都必须单独读取。

5)您的 scan_element 函数不应包含 print_element :P

如果您想了解有关 ANSI C 中的控制台 I/O 的更多信息,也许 this article可能有用。

这是更正后的代码:

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

typedef struct {
int atomic_num;
char element_name[30];
char element_symbol[3];
char element_class[30];
double atomic_weight;
int electrons[7];
} element_t;

element_t scan_element();
void print_element(element_t my_element);

element_t scan_element() {
int i = 0;
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);

for(i = 0; i<7; i++)
{
printf("Enter Electon - electron nr %d\n",i);
scanf("%d", &my_element.electrons[i]);
}

return my_element;
}

void print_element(element_t my_element) {
int i;
printf("%d %s %s %s %lf\n",
my_element.atomic_num,
my_element.element_name,
my_element.element_symbol,
my_element.element_class,
my_element.atomic_weight);
for(i = 0; i<7; i++)
{
printf("%d",my_element.electrons[i]);
}
puts("\n");
}

int main()
{
element_t val = scan_element();
print_element(val);

return 0;
}

关于c - 单元化结构定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13465784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com