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没问题。

相关推荐
估值探索者2 小时前
【AI+量化实战 #05】财报季的信息洪流:用LLM给业绩预告分类+算事件窗口收益
java·c语言·c++·人工智能·python·分类·数据挖掘
繁星蓝雨13 小时前
C++的设计与演进大纲(如何从C语言一步步成长为C++)
c语言·开发语言·c++·c++历史·c++演进
yutian060613 小时前
C: Unix UTC 时间戳转为 UTC+8 北京时间
c语言·unix
彧azz16 小时前
数据结构:关于图的学习
c语言·数据结构·笔记·学习·算法
彧azz17 小时前
二叉搜索树学习记录
c语言·数据结构·笔记·算法
番茄灭世神21 小时前
汇顶模拟前端GH3220使用备忘录
c语言·单片机·传感器·模拟芯片·电生理信号处理
Brilliantwxx1 天前
【STM32 】把 printf 搬到串口上 —— C 标准 IO 函数重定向与多文件工程搭建(实战串口电灯)
c语言·开发语言·stm32·单片机·嵌入式硬件·架构·ecmascript
wuminyu1 天前
Kafka利用sendfile与Page Cache实现高性能传输剖析
java·linux·c语言·jvm·c++
亮_一个嵌入式新手1 天前
C语言Day21
c语言·开发语言