数组中的值未在C中显示

eivnm1vs  于 2023-04-05  发布在  其他
关注(0)|答案(2)|浏览(106)

"这是我的准则"

#include <stdio.h>
void main() {
  int opt, element;
  char name[10][10] = {"Hytrogen","oxygen","Mercury"};
  printf("WELCOME TO PERIODIC TABLE IMPLEMENTATION USING C LANGUAGE \n");
  printf("Please enter the atomic number of any element to view its details\n");
  scanf("%d", &opt);
  printf("\nThe entered option is %d", opt);
  element = opt+1;
  printf("\nAtomic numbere is : %d", element);
  printf("\nName of the element is : ");
  printf(name[element]);  
}

我得到的输出

WELCOME TO PERIODIC TABLE IMPLEMENTATION USING C LANGUAGE
Please enter the atomic number of any element to view its details
2
The entered option is 2
Atomic numbere is : 3
Name of the element is :

为什么元素名不在最后一行Name of the element is :??
我试了一个在线编译器

cu6pst1q

cu6pst1q1#

@dbush已经回答了为什么它不工作(数组索引从0开始)。这里是一种正确的方法。

#include <stdio.h>

void main() {
  int atomic_num;
  // TODO(Thomaskutty A): Increase the array size to 118 and add all the elements
  char element_names[10][10] = {"Hydrogen", "Helium", "Lithium", "Beryllium"};
  printf("WELCOME TO PERIODIC TABLE IMPLEMENTATION USING C LANGUAGE\n");
  printf("Please enter the atomic number of any element to view its details: ");
  scanf("%d", &atomic_num);
  // TODO(Thomaskutty A): Validate user input
  printf("The entered number is %d\n", atomic_num);
  printf("Name of the element is: %s\n", element_names[atomic_num - 1]);
}

您应该添加检查以验证用户输入。NTUI(Never Trust User Input)。
正如@dbush所说,在将代码发布到SO之前,对代码给予一点清理(格式化,删除不必要的字符,使用好的变量名,修复语法错误/拼写错误......)。以此为生的人看到写得很糟糕的代码时会讨厌它。
快乐的编码,并继续学习...)

wko9yo5t

wko9yo5t2#

数组的索引从0开始。
索引012处的name数组的内容-

+-------------------+
    name[0] ->|H|y|d|r|o|g|e|n|0|0|
              +-------------------+

              +-------------------+
    name[1] ->|o|x|y|g|e|n|0|0|0|0|
              +-------------------+

              +-------------------+
    name[2] ->|M|e|r|c|u|r|y|0|0|0|
              +-------------------+

你应该从用户输入中减去1,而不是将1添加到用户输入中,因为你将元素的原子序数作为用户的输入:

element = opt - 1;
          ^^^^^^^

如果用户在1处输入,则程序应显示Hydrogen,它存在于name数组的索引0处,对于输入2,程序应显示oxygen,它存在于name数组的索引1处,依此类推。
另外,使用void作为main()函数的返回类型不符合标准。main()函数的返回类型应该是int

相关问题