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

如何在C语言中通过单循环同时按列打印多行内容?

用单个循环在C语言中实现多行按列打印

你需要将原本用两个循环分别打印F(n)和M(n)序列的代码,改成用单个循环实现,同时输出符合以下格式的内容:

F(n):
0 1 1 2 2 3 3 4 4 5 5 6
M(n):
0 -1 1 0 2 1 3 2 4 3 5 4

原代码如下:

int M(int n){return n+1;}
int F(int n){return n-1;}

int main(void)
{
    int n;
    printf("F(n):\n");
    for (n = 0; n <= 5; n++)
    {
        printf("%d %d ", n, F(n));
    }
    printf("\nM(n):\n");

    for (n = 0; n <= 5; n++)
    {
        printf("%d %d ", n, M(n));
    }
    printf("\n");
}

解决方案

可以通过缓冲区存储的方式,在单个循环中分别收集两行的输出内容,循环结束后一次性打印结果,实现需求。

示例代码:

#include <stdio.h>

int M(int n){return n+1;}
int F(int n){return n-1;}

int main(void)
{
    // 定义足够大的缓冲区存储两行输出内容
    char f_line[100] = {0};
    char m_line[100] = {0};
    int n;

    // 单个循环同时收集两行的内容
    for (n = 0; n <= 5; n++)
    {
        // 将当前n和F(n)追加到F行缓冲区
        sprintf(f_line, "%s%d %d ", f_line, n, F(n));
        // 将当前n和M(n)追加到M行缓冲区
        sprintf(m_line, "%s%d %d ", m_line, n, M(n));
    }

    // 按格式打印结果
    printf("F(n):\n%s\n", f_line);
    printf("M(n):\n%s\n", m_line);

    return 0;
}

代码说明

  • 用两个字符数组作为缓冲区,在循环中通过sprintf把每一组n和函数计算结果追加到对应行的缓冲区中
  • 循环仅执行一次,完成所有数据的收集
  • 最后一次性打印两行内容,完全匹配预期输出格式

如果担心固定大小缓冲区不够用,也可以使用动态内存分配来适配更大的输出范围,核心逻辑保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:47:18