gpt4 book ai didi

c - 数组和 while scanf 崩溃

转载 作者:行者123 更新时间:2023-11-30 15:03:16 24 4
gpt4 key购买 nike

#define LEN 200
int main()
{
int arr[LEN],i;
for (i =0; i < LEN; i++)
while(scanf("%d", arr[LEN]) == 1){
if((arr[LEN] == arr[LEN]+1) || arr[LEN] < 0){
printf("Bad numbers.\n");
}
else if(arr[LEN] == 0){
break;
}
}
printf("Break");
return 0;
}

我的观点是,如果我写的数字不同且大于 0,并且 arr[5]a[12]a 不同[任何其他] 它应该将其保存到数组中。但如果 arr[LEN] == 0 它应该停止 scanf 并将读取的数字保存到数组中,然后继续执行其他操作。几个数字之后,我的代码崩溃了。有人可以帮助我吗?

最佳答案

  1. 在 for 循环内,您需要使用 arr[i] 而不是 arr[LEN]。说实话,arr[LEN] 声明创建了一个名称为 arr 的数组,索引范围为 0LEN-1。因此 arr[LEN] 超出了数组的范围。
  2. scanf 中,您需要使用 &arr[i] 而不是 arr[LEN]
  3. if 条件中,您需要编写 if(arr[i] == arr[i-1]) 因为您只能将当前输入值与先前输入值进行比较值,而不是尚未输入的下一个值。但请确保为 i=0 单独处理此条件,因为这样 i-1 将不是数组的元素。

我认为这些更改将使您的代码对于所有值都能顺利工作。另外,如果您想确保所有数组值都不同,则必须将当前输入值与所有先前存储的值进行比较。因为当前值可能与之前的值不同,但可能与之前输入的值相似。

关于c - 数组和 while scanf 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40805049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com