首页 > 解决方案 > 程序不会退出第一个 for 循环,我不知道为什么

问题描述

该程序应该找到友好的配对。第一个输入告诉你后面有多少个数字,程序应该找出这些数字中的哪些是友好的对。我不知道程序是否真的能够做到这一点,因为我什至无法通过第一个for循环,这实际上只是将需要检查的元素放入一个数组中。

int main(int argc, char *argv[]) {

    int numberOfNumbers, num;
    scanf("%d", &numberOfNumbers);

    int numbers[numberOfNumbers];
    for (int i = 0; i < numberOfNumbers; i++) {
        scanf("%d", &num);
        numbers[i] = num;
    }

我希望程序移动到代码的计算部分(我没有包括在内)并产生一些输出,无论它是否正确,但是在我输入最后一个数字之后,它只是表现得好像它想要另一个输入。那时我可以输入格雷厄姆号码的每一位数字,但它仍然不会退出。

标签: c

解决方案


调试问题的第一步是验证您是否遇到了正在考虑解决的问题。

for (int i = 0; i < numberOfNumbers; i++) {
    scanf("%d", &num);
    numbers[i] = num;
}

是您正在考虑修复的循环。

printf("entering loop\n");
for (int i = 0; i < numberOfNumbers; i++) {
    printf("i is %d, numberOfNumbers is %d\n", i, numberOfNumbers);
    scanf("%d", &num);
    numbers[i] = num;
}
printf("loop finished\n");

是您需要完全验证您对循环的猜测是否正确(或错误)的代码。

我希望这会有所帮助,即使它不是直接的答案。您的代码看起来不错,但基于很多项目(包括用户输入)可能是错误的。


推荐阅读