我正在解决一个编码问题“从输入中找到最小的数字”,我以 for 循环的形式获取输入并将它们存储在一个数组中。对于小于 11 的总输入它工作正常,但对于大于 11 的它只需要 10 个输入然后中断。
printf("HOW MANY NUMBERS DO YOU WANT TO INPUT\n");
int array_size , var1;
scanf("%d",&array_size );
var1 = array_size;
int index = 0 , array[index];
for(int index = 0; index < array_size; index++)
{
printf("inputs left: %d\n",var1);
var1 -= 1;
scanf("%d",&array[index]);
}
我希望它应该根据用户的需要进行尽可能多的输入,但只需要 10 个输入,我似乎找不到问题所在。
您想创建一个大小为零的数组,这是不允许的。你也不能声明一个可变大小的数组,所以你必须使用malloc
或其他东西。
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("HOW MANY NUMBERS DO YOU WANT TO INPUT\n");
int array_size;
scanf("%d", &array_size);
int* Array = (int *) malloc(array_size * sizeof(int));
for(int index = 0; index < array_size; index++)
{
printf("inputs left: %d\n", array_size - index);
scanf("%d", (Array + index));
}
for(int i = 0; i < array_size; i++)
{
printf("%d\n\r", *(Array + i));
}
free(Array);
return 0;
}
这使
HOW MANY NUMBERS DO YOU WANT TO INPUT
3
inputs left: 3
1
inputs left: 2
2
inputs left: 1
3
1
2
3
或者您使用类似std::vector
.
#include <stdio.h>
#include <vector>
int main()
{
printf("HOW MANY NUMBERS DO YOU WANT TO INPUT\n");
int array_size;
scanf("%d", &array_size);
std::vector<int> Array;
for(int index = 0; index < array_size; index++)
{
int Temp;
printf("inputs left: %d\n", array_size - index);
scanf("%d", &Temp);
Array.push_back(Temp);
}
for(int i = 0; i < array_size; i++)
{
printf("%d\n\r", Array.at(i));
}
return 0;
}
这导致相同的输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句