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

相关推荐
白山编程大哥1 小时前
Lua 中使用 C 语言的用户自定义类型——userdata
c语言·junit·lua
无敌贵点大王2 小时前
RTThread学习记录13——关于要使用一个外设,RTThread与cubemx到底要怎么配合?
c语言·stm32·学习·rtthread
phltxy2 小时前
C 语言动态内存管理:从申请空间到安全释放
c语言·开发语言·ui
上位机妹子3 小时前
C 语言 数组删除指定元素(快慢指针法)
c语言·数据结构·算法
心中有你02143 小时前
【路径规划】A*寻路算法最通俗易懂讲解(C语言完整实现+详细注释)
c语言·开发语言·算法
大圣编蚕3 小时前
C语言入门:基本语法汇总
c语言·开发语言
en.en..4 小时前
C语言---宏
c语言·开发语言
白山编程大哥5 小时前
适合初学者练习的 C/C++ 开源项目推荐
c语言·c++·开源
小灰灰搞电子5 小时前
C 语言 <stdlib.h> 头文件详解
c语言·stdlib.h
Navigator_Z6 小时前
LeetCode //C - 1276. Number of Burgers with No Waste of Ingredients
c语言·算法·leetcode