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

如何避免printf整语句重复,仅让输入的字符按指定次数重复?

解决字符重复输出问题:仅重复目标字符而非整句

需求与问题

要求输入字符+数字(例如输入D10),输出格式为DO-WHILE: DDDDDDDDDD——固定前缀仅输出一次,目标字符按指定次数重复。但当前代码会将包含前缀的整句重复打印,导致输出多次DO-WHILE: D,不符合需求。

原代码核心问题

原代码将带前缀的printf语句放在循环内部,导致每次循环都输出一次前缀+单个字符;同时存在语法不完整(缺失闭合大括号)、条件判断逻辑错误的问题。

修改后的完整代码

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void)
{
    char value;
    int iterations, numIter;

    printf("+----------------------+ \nLoop application STARTED\n+----------------------+\n\n");
    
    printf("D = do/while | W = while | F = for | Q = quit\n");
    printf("Enter loop type and the number of times to iterate (Quit=Q0): ");
    scanf(" %c%d", &value, &iterations);

    // 处理退出逻辑
    if (value == 'Q' && iterations == 0) {
        printf("Quitting application...\n");
        return 0;
    }

    // D类型循环处理:前缀只打一次,循环仅重复字符
    if (value == 'D' && iterations > 3 && iterations < 20) {
        printf("DO-WHILE: "); // 固定前缀仅输出一次
        for (numIter = 0; numIter < iterations; numIter++) {
            printf("%c", value); // 循环仅打印目标字符
        }
        printf("\n"); // 换行优化格式
    }

    // 可在此补充W、F类型的对应处理逻辑
    // ...

    return 0;
}

关键修改说明

  • 拆分打印逻辑:将固定前缀(如DO-WHILE: )移到循环外部,只执行一次;循环内部仅负责重复打印目标字符。
  • 修正条件判断:原代码中iterations > 3 || iterations < 20逻辑错误,改为&&来限定次数在3到20之间(不含边界)。
  • 补全语法与退出逻辑:添加Q键退出的处理,补全缺失的大括号,保证代码语法完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:05:27