You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言创建字符串数组时输入达最大允许数量如何跳出循环?

姓名录入循环无法跳出问题修复方案

问题原因

  • 循环结构冗余错误:你嵌套了do-while和for两层循环,外层do-while的终止条件逻辑完全反向。while (yesNo == 'Y' || counter == 5)中||表示任意条件成立就继续循环,当输入满5个姓名后counter等于5,会触发条件反复进入外层循环,永远无法退出。
  • 代码写法不规范:scanf(" %s", &namesArray[x][0])参数冗余,数组名本身就是首地址,直接传入namesArray[x]即可。

修正后可运行代码

#include <stdio.h>

int main(void) {
    // 最多存储5个姓名,单个姓名最长支持99个字符
    char namesArray[5][100];
    int x;
    char yesNo;
    int counter = 0;

    // 单层循环即可实现需求,无需嵌套
    while (counter < 5) {
        printf("\n请输入朋友姓名:");
        scanf(" %s", namesArray[counter]);
        counter++;

        // 存满5个直接结束,无需询问是否继续
        if (counter == 5) {
            break;
        }

        printf("\n是否继续输入其他朋友姓名?输入Y继续,输入N结束:");
        scanf(" %c", &yesNo);
        if (yesNo == 'N') {
            break;
        }
    }

    // 打印所有录入的姓名
    printf("\n你录入的朋友姓名如下:\n");
    for (x = 0; x < counter; x++) {
        printf("%s\n", namesArray[x]);
    }

    return 0;
}

内容的提问来源于stack exchange,提问作者SimTim124

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:54:04