首页 > 解决方案 > 坚持如何从用户定义值的数组中获取索引的值

问题描述

我正在尝试编写 C 代码,其中用户输入 10 个值和索引,输出应显示用户设置的 10 个值中的索引值。

问题陈述:

你的祖父母给了你一个绝妙的烹饪食谱,但你永远不记得你必须使用多少每种配料!配方中有 10 种成分,每种成分所需的数量作为输入(以克为单位)给出。您的程序必须读取 10 个整数(每种成分所需的数量,按顺序)并将它们存储在一个数组中。然后它应该读取一个表示成分 ID 号的整数(介于 0 和 9 之间),并输出相应的数量

示例输入:

500 180 650 25 666 42 421 1 370 211

3

我的代码:

#include <stdio.h>

int main(){
int ingred[9];
int readValue = 0;
int ID;
for(int i = 0; i < 9;i++){
    scanf("%d %d", &readValue,&ID);
    ingred[i] = readValue;

}
printf("%d",ingred[ID]);
return 0;
}

我的输出总是0。用户按下“回车”后,scanf()函数不读取下一行代码吗?请帮忙。

标签: carraysinputscanf

解决方案


是否需要从一行中读取所有数量?因为使用 scanf 执行这可能有点棘手。您可以遍历一个循环并一一获取所有数量,如下所示:

#include <stdio.h>

int main ()
{
  int ingredients [10];
  int newQuantity = 0;
  int ingredientId;
  int index;

  for (index = 0; index < 10; index++)
  {
      printf ("Enter quantity #%d: ", index);
      scanf ("%d", &newQuantity);
      ingredients [index] = newQuantity;

  }

  printf ("Enter the ID: ");
  scanf ("%d", &ingredientId);
  printf ("Quantity: %d\n", ingredients [ingredientId]);

  return 0;
}

在您的代码中,您尝试在循环中读取一对整数值九次。这也是需要注意的一点:尽管数组索引从 0 开始,但当您声明一个数组时,括号内的值是数组元素的数量,而不是最后一个元素的索引。


推荐阅读