我用c-写了这个代码:
#include <stdio.h>
#include <conio.h>
struct chemical_elements {
char element_name[100];
char element_symbol[10];
int atomic_number;
int atomic_mass;
};
void main() {
int i;
chemical_elements elements[118];
char elements_name[120][20]={" ","Hydrogen","Helium","Lithium","Beryllium","Boron","Carbon","Nitrogen","Oxygen","Fluorine","Neon","Sodium","Magnesium","Aluminum","Silicon","Phosphorus","Sulfur","Chlorine","Argon","Potassium","Calcium","Scandium","Titanium","Vanadium","Chromium","Manganese","Iron","Cobalt","Nickel","Copper","Zinc","Gallium","Germanium","Arsenic","Selenium","Bromine","Krypton","Rubidium","Strontium","Yttrium","Zirconium","Niobium","Molybdenum","Technetium","Ruthenium","Rhodium","Palladium","Silver","Cadmium","Indium","Tin","Antimony","Tellurium","Iodine","Xenon","Cesium","Barium","Lanthanum","Cerium","Praseodymium","Neodymium","Promethium","Samarium","Europium","Gadolinium","Terbium","Dysprosium","Holmium","Erbium","Thulium","Ytterbium","Lutetium","Hafnium","Tantalum","Tungsten","Rhenium","Osmium","Iridium","Platinum","Gold","Mercury","Thallium","Lead","Bismuth","Polonium","Astatine","Radon","Francium","Radium","Actinium","Thorium","Protactinium","Uranium","Neptunium","Plutonium","Americium","Curium","Berkelium","Californium","Einsteinium","Fermium","Mendelevium","Nobelium","Lawrencium","Rutherfordium","Dubnium","Seaborgium","Bohrium","Hassium","Meitnerium","Darmstadtium","Roentgenium","Copernicium","Nihonium","Flerovium","Moscovium","Livermorium","Tennessine","Oganesson", " "};
for (i=1;i<=118;i++) {
elements[i].atomic_number=i;
elements[i].element_name=elements_name[i];
}
getch();
}我做它是为了告诉元素电子配置,但是当我在编写代码之间签入时,在编译它时,我发现它给出了以下错误-:
new5.c(13): error C2065: 'chemical_elements': undeclared identifier
new5.c(13): error C2146: syntax error: missing ';' before identifier 'elements'
new5.c(13): error C2065: 'elements': undeclared identifier
new5.c(13): error C2109: subscript requires array or pointer type
new5.c(16): error C2065: 'elements': undeclared identifier
new5.c(16): error C2109: subscript requires array or pointer type
new5.c(17): error C2065: 'elements': undeclared identifier
new5.c(17): error C2109: subscript requires array or pointer type我有什么办法解决这个问题吗?
发布于 2022-03-23 16:50:01
与其在名称和原子序号中复制,不如用这些值初始化数组。
struct chemical_elements {
const char *element_name;
const char *element_symbol;
int atomic_number;
double atomic_mass;
};
const struct chemical_elements elements[] = {
{ "Hydrogen", "H", 1, 1.0079 },
{ "Helium", "He", 2, 4.0026 },
...
{ "Oganesson", "Og", 118, 294 },
}
const size_t chemical_elements_n = sizeof chemical_elements / chemical_elements[0];我看不出.atomic_number成员有什么理由。下面考虑一下,并使用数组索引作为原子序数。
struct chemical_elements_alt {
const char *element_name;
const char *element_symbol;
double atomic_mass;
};
const struct chemical_elements_alt elements[] = {
{ "Neutron", "Nu", 1.00867 },
{ "Hydrogen", "H", 1.0079 },
{ "Helium", "He", 4.0026 },
...
{ "Oganesson", "Og", 294 },
}https://stackoverflow.com/questions/71590409
复制相似问题