c 语言 输出矩形

BC7 牛牛的字符矩形

题目:输入 1 个字符,输出3 行,每行 3 个这个字符 样例输入#

复制代码
###
###
###

我的写法(硬写 printf)

复制代码
#include <stdio.h>
int main()
{
    char c;
    scanf("%c",&c);
    printf("%c%c%c\n%c%c%c\n%c%c%c\n",c,c,c,c,c,c,c,c,c);
    return 0;
}

✅这个写法可以 AC,能直接提交 。 直接写死 9 个c,三行,适合 3*3 很小的矩阵。缺点:如果改成 5 行 5 列,就要复制一大堆。


标准写法:双重 while/for 循环(推荐刷题掌握)

外层循环控制行数(跑 3 次,代表 3 行) 内层循环控制每行打印几个字符(跑 3 次,打印 3 个 c) 每行内层结束之后打印\n换行。

复制代码
#include <stdio.h>
int main()
{
    char c;
    scanf("%c", &c);
    // 外层:3行
    for(int i = 0; i < 3; i++)
    {
        // 内层:每行输出3个字符
        for(int j = 0; j < 3; j++)
        {
            printf("%c", c);
        }
        printf("\n"); // 一行结束,换行
    }
    return 0;
}

#include <stdio.h>
int main()
{
    char c;
    scanf("%c", &c);

    int i = 0;
    // 外层:3行
    while(i < 3)
    {
        int j = 0;
        // 内层:一行输出3个字符
        while(j < 3)
        {
            printf("%c", c);
            j++;   // j自增
        }
        printf("\n"); // 本行结束,换行
        i++;   // 行数+1
    }
    return 0;
}

运行逻辑

i=0(第 1 行):j 循环打印 3 个 c → 换行 i=1(第 2 行):j 循环打印 3 个 c → 换行 i=2(第 3 行):j 循环打印 3 个 c → 换行

输出效果:

复制代码
###
###
###

两个方案对比

  1. 硬编码 printf(你的方式) 优点:简单,不用学循环,本题能过 缺点:矩阵变大就非常麻烦,比如 10 行 10 列,不能这么写。
  2. 双重 for 循环(考试、OJ 通用) 优点:改数字就能随便变几行几列,后面做图形题全靠双重循环,必须学会。

小坑提醒:scanf("%c", &c),如果前面有别的输入,会读回车;这道题前面没有输入,直接写%c没问题。

相关推荐
Felven4 小时前
C. Brr Brrr Patapim
c语言·开发语言
Zwawa7 小时前
嵌入式OLED表驱动菜单:用一张表、一个栈和一个窗口重写表驱动菜单
c语言·单片机·嵌入式
沐晓时光21 小时前
C语言入门,内存函数知识讲解
c语言·开发语言
Zwawa1 天前
C语言函数指针与宏实战:从回调、表驱动菜单到X-Macro,讲透嵌入式代码解耦
c语言·单片机·嵌入式
David猪大卫1 天前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
HPtiger1 天前
C++ 入门笔记:从 C 到 C++ 的核心过渡(命名空间、输入输出、缺省参数、重载、引用、内联)
c语言·c++·学习
安妮细水长流1 天前
ad7124
c语言·单片机
Zwawa2 天前
用两个按键做一个OLED菜单:先把选择和执行分开
c语言·单片机·嵌入式
心仪久了会沦陷2 天前
C语言数据结构入门——树与二叉树详解:概念、堆实现与链式遍历
c语言·数据结构·算法
Severus_black2 天前
【C++初阶】list使用及相关实现,思路顺滑流畅!
c语言·数据结构·c++·stl·list