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

如何在两个三角形输出间加换行,且末尾三角形后无换行?

解决三角形输出间换行、末尾无多余换行的问题

需求说明:处理多组输入数字,偶数对应输出倒三角形,奇数对应输出正三角形,要求两个三角形输出之间空一行,但最后一个三角形的输出末尾不能有多余换行。

示例输入

4
5

示例输出

*******
*****
  ***
*

    *
   ***
  *****
 *******
*********

原代码问题分析

当前代码在每个三角形输出后都执行printf("\n");,导致最后一个三角形末尾也会多出一行空行,不符合需求。

修改方案

核心思路是:通过标记变量判断当前是否为第一个输出的三角形,非第一个三角形输出前先打印换行,既保证了三角形间的分隔,又避免最后末尾出现多余换行。

修改后的完整代码:

#include <stdio.h>
#include <stdlib.h>

void printDownT(int n){
    for (int i = n; i >= 1; i--) {
        for (int j = 1; j <= n - i; j++) {
            printf(" ");
        }
        for (int k = 1; k <= 2 * i - 1; k++) {
            printf("*");
        }
        printf("\n");
    }
}

void printUpT(int n){
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n - i; j++) {
            printf(" ");
        }
        for (int k = 1; k <= 2 * i - 1; k++) {
            printf("*");
        }
        printf("\n");
    }
}

int main(){
    int num;
    int first = 1; // 标记是否为第一个输出的三角形
    while (scanf("%d", &num) != EOF){
        if (!first) {
            // 非第一个三角形,先打印换行分隔
            printf("\n");
        }
        if (num % 2 == 0){
            printDownT(num);
        }
        else{
            printUpT(num);
        }
        first = 0; // 输出后更新标记
    }
    return 0;
}

修改要点

  1. 新增first标记变量,初始值为1,表示第一个三角形不需要前置换行
  2. 每次循环判断:若不是第一个输入,先打印换行再输出三角形,实现三角形间的分隔
  3. 移除原代码中每个三角形后的printf("\n");,因为三角形内部的每行已自带换行,无需额外添加

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:37:29