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

相关推荐
学逆向的15 分钟前
C 宏函数
c语言·开发语言·网络安全
Code_Solitude16 分钟前
C语言:指针题型总结
c语言·开发语言
wyhwust18 分钟前
程序设计基础-No5课件知识点
c语言
FLJwu37 分钟前
运动相机采购选型避坑实战|第二篇
c语言·开发语言·数码相机·运动相机·oem 量产
lhbweilai1 小时前
分析FreeRTOS内核对象API的源码实现(六)
c语言·stm32·单片机
Brilliantwxx2 小时前
【STM32】RTC 完结篇:日期操作、闹钟中断与附录(时间戳 / 闹钟 / NTP)
服务器·c语言·stm32·单片机·嵌入式硬件·实时音视频
学逆向的3 小时前
C 悬空指针
c语言·开发语言·网络安全
·present·15 小时前
CSAPP(lecture 4_01)
c语言·c++
本地化文档19 小时前
llvm-libc-docs-l10n
c语言·github·gitcode·sphinx·llvm·crowdin
Felven20 小时前
B. Collecting Game
c语言