1

2 个数组不会存储输入,每个索引号的增量始终为 0,如 printf 所述。


int main()
{
  int ingredientsAmount;
  double ingredientsPrice[10];
  double ingredientsWeight[10];
  
  scanf("%d", &ingredientsAmount);
  
  for(int i = 0; i < ingredientsAmount; i++)  
  {
    scanf("%lf", &ingredientsPrice[i]);
    printf("Price stored at index %lf\n", i); 
    scanf("%lf", &ingredientsWeight[i]); 
    printf("Weight stored at index %lf\n", i); 
  }
  
  return 0;
}

4

1 回答 1

1

%lf对类型的对象使用了不正确的转换说明符int。使用转换说明符%d。写

printf("Price stored at index %d\n", i);

printf("Weight stored at index %d\n", i); 

或者你的意思是以下

printf("Price stored at index %d is %f\n", i, ingredientsPrice[i]);

printf("Weight stored at index %d is %f\n", i, ingredientsWeight[i]); 

请注意,for 循环是不安全的,因为ingredientsAmount用户输入的变量的值可能大于声明的数组的大小。

至少你应该写

if ( scanf("%d", &ingredientsAmount) != 1 || ingredientsAmount > 10 )
{
   ingredientsAmount = 10;
}
于 2021-11-19T20:57:21.080 回答