C语言练习百题之打印楼梯

题目:打印楼梯

程序分析

要实现打印楼梯,并在楼梯上方打印两个笑脸,可以分成两个部分:打印笑脸和打印楼梯。

  1. 打印笑脸:可以使用ASCII艺术来绘制笑脸。
  2. 打印楼梯:通过循环来控制楼梯的层数,每层递增打印"#"符号。

解题思路

  1. 打印笑脸:使用ASCII艺术打印笑脸。
  2. 打印楼梯:通过循环控制打印楼梯,根据楼梯的层数逐层增加"#"符号。

方法一: 分别打印

首先打印两个笑脸,然后在每行打印楼梯。

代码实现

#include 

void printSmileyFace() {
    printf("  :)  :)\n");
    printf("    **  \n");
}

void printStairs(int numStairs) {
    for (int i = 1; i <= numStairs; i++) {
        for (int j = 0; j < i; j++)
            printf("#");
        printf("\n");
    }
}

int main() {
    printSmileyFace();
    printStairs(5);  // Print 5 stairs
    return 0;
}

优缺点分析

优点:

  • 简单明了,易于实现。

缺点:

  • 代码结构不够优雅,函数间逻辑分离。

方法二: 结合打印

将打印笑脸和打印楼梯结合在一起,在每行打印楼梯的同时判断是否需要打印笑脸。

代码实现

#include 

void printStairsWithSmiley(int numStairs) {
    for (int i = 1; i <= numStairs; i++) {
        if (i == 1 || i == numStairs)
            printf("  :)  :)\n");
        
        for (int j = 0; j < i; j++)
            printf("#");
        printf("\n");
    }
}

int main() {
    printStairsWithSmiley(5);  // Print 5 stairs
    return 0;
}

优缺点分析

优点:

  • 减少了函数调用,代码更简洁。

缺点:

  • 逻辑仍有些分散,可能不够清晰。

方法三: 优化结合

进一步优化,将打印笑脸和打印楼梯结合为一个函数,使得代码更清晰。

代码实现

#include 

void printStairsWithSmiley(int numStairs) {
    for (int i = 1; i <= numStairs; i++) {
        if (i == 1 || i == numStairs)
            printf("  :)  :)\n");
        
        for (int j = 0; j < i; j++)
            printf("#");
        
        printf("\n");
    }
}

int main() {
    printStairsWithSmiley(5);  // Print 5 stairs
    return 0;
}

优缺点分析

优点:

  • 代码更加简洁和清晰,逻辑一目了然。

缺点:

  • 减少了函数的复用性。

总结推荐

推荐方法三,即优化结合的方式。这种方法既简洁又清晰,将打印笑脸和打印楼梯结合为一个函数,代码逻辑更加清晰,不会造成过多的代码重复。虽然方法二也能实现目标,但方法三在代码结构和逻辑上更优雅。方法一虽然可行,但分别打印笑脸和楼梯的方式不够优雅,代码结构较差。因此,方法三是最推荐的实现方式。

你可能感兴趣的:(C语言练习百题,c语言,算法,开发语言)