c - 坚持如何从用户定义值的数组中获取索引的值
问题描述
我正在尝试编写 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()函数不读取下一行代码吗?请帮忙。
解决方案
是否需要从一行中读取所有数量?因为使用 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 开始,但当您声明一个数组时,括号内的值是数组元素的数量,而不是最后一个元素的索引。
推荐阅读
- powershell - 函数返回对象数组而不是 ArrayList
- http - 从球拍输入端口读取时如何显示 HTTP 文件下载进度
- r - ggplot2 使用开放或封闭的圆圈
- c# - Microsoft.Toolkit.Services.OneDrive.OneDriveService 已保存登录
- google-apps-script - 脚本从一张纸上复制某些单元格并粘贴到下一个空行的另一张纸上
- d3.js - 使用 d3.js 将数据连接到我的代码
- regex - 如何使用 Eclipse 或 PowerGREP 搜索和替换文件中的块?
- python-3.x - Python多进程和并行执行与结果文件写入
- javascript - 如何从 fs.accessAsync 返回一个值
- android - android aapt 错误:没有 layout_constraintLeft_toLeftOf