正确的应该是可以继续输入下一条,但是我这里直接终止了,不知道是不是最后return的原因

img

img

img

img


用的是devcpp所以不能用void,改成了int,用int就得用return,但是才打完第一行,然后打完名字就显示返回,不过我如果名字那里输入1他就还能继续重复1的printf

你的 EnQueue方法出错了吧,你把代码 都贴出来看看

  • 以下回答由chatgpt基于相关博客总结生成:

    根据问题描述,可能存在的问题有:

    1. 程序在第一次输入之后就立即返回,需要持续运行,直到用户明确选择退出或程序出现错误。
    2. 需要将函数的返回类型改为 int,以至于需要使用 return 语句。
    3. 在名称输入中,输入数字1之后,程序将会继续运行并重复打印数字1。

    针对这些问题,可以进行以下解决方案:

    1. 首先需要使用循环语句,比如 while 或 for 循环,来让程序持续运行。在循环结构里面,需要判断用户是否已经选择退出或是否出现了错误,如果满足条件,则可以使用 break 语句跳出循环,否则程序就会一直运行下去。具体实现可以参考以下示例代码:
    int main() {
        while (1) {
            // 程序运行的代码逻辑
            if (/* 用户选择退出或出现错误 */) {
                break;
            }
        }
        return 0;
    }
    
    1. 如果需要将函数的返回类型改为 int,确实需要在函数最后使用 return 语句。如果不需要返回值,则可以使用 return 0; 告诉函数已经运行结束。具体示例代码如下:
    int myFunction() {
        // 函数代码逻辑
        return 0;
    }
    
    1. 在名称输入中,输入数字1之后,程序将会继续运行并重复打印数字1,说明程序中可能存在一个无限循环结构。可以查看代码,判断是否在循环语句里面出现了无限循环的情况。比如,在 for 循环里面判断条件是否正确;或者在 while 循环里面没有正确更新变量,导致循环一直无法结束。需要根据具体的代码情况进行判断和修改。下面的示例代码中展示了错误的无限循环结构:
    int main() {
        int i = 0;
        while (i < 5) {
            // 用户输入名称
            char name[20];
            printf("请输入名称:");
            scanf("%s", name);
    
            if (name == "1") {
                // 如果用户输入了数字1,则继续打印数字1
                printf("1");
            }
    
            i++;
        }
        return 0;
    }
    

    正确的代码示例应该是:

    int main() {
        int i = 0;
        while (i < 5) {
            // 用户输入名称
            char name[20];
            printf("请输入名称:");
            scanf("%s", name);
    
            if (strcmp(name, "1") == 0) {
                // 如果用户输入了数字1,则继续打印数字1
                printf("1");
            }
    
            i++;
        }
        return 0;
    }
    

    可以看到,修改后的代码使用了字符串比较函数 strcmp,来判断用户输入的名称是否等于数字1,从而避免了错误的无限循环结构。