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

冰雹序列C语言实现:修正输出末尾空格与格式问题

修正冰雹序列输出的末尾制表符问题

原代码的问题分析

  1. 错误使用Python语法:C语言的printf函数不支持end='\t'参数,这是语法错误。
  2. 末尾多余制表符:所有元素都以%d\t格式输出,导致每行末尾(包括最后一行的1)都会留下多余的制表符,不符合格式要求。

修正后的代码

#include <stdio.h>

int main(void) {
    int n;
    int count = 0;
    scanf("%d", &n);
    
    while (1) {
        // 先输出当前数字
        printf("%d", n);
        count++;
        
        // 到达序列终点1,终止循环
        if (n == 1) {
            break;
        }
        
        // 判断输出分隔符还是换行:每10个元素换一行
        if (count % 10 == 0) {
            printf("\n");
        } else {
            // 非行尾且非最后一个元素,输出制表符分隔
            printf("\t");
        }
        
        // 生成下一个冰雹数
        if (n % 2 == 0) {
            n = n / 2;
        } else {
            n = 3 * n + 1;
        }
    }
    
    return 0;
}

修正逻辑说明

  • 调整输出顺序:先输出数字,再根据当前位置决定输出制表符或换行,从根源避免末尾出现多余分隔符。
  • 移除错误的end='\t'参数,符合C语言语法规范。
  • 当序列走到1时直接终止循环,不再输出后续分隔符,保证最后一个元素后无多余符号。
  • 每行满10个元素时输出换行,否则输出制表符分隔当前元素与下一个元素,完美匹配示例格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:49:57