按照下列格式,打印图形

  本人大一萌新,由于自身知识和经验的匮乏,对于很多编程题都没有明确的思路,我希望能够通过分享一些自己在C语言学习过程中的小经验 ,来提升自己的能力,希望也能够帮到大家~~

【题目描述】

仿照样例的格式,打印不同方向的矩形和三角形,两者之间存在一个空行。

【输入输出格式】

   输入格式:输入矩阵的规模不超过9

   输出格式:输出矩形和三角形,矩形和三角形之间有一个空行

【样例】

  •   #1

    输入:4


    输出:

    01020304
    05060708
    09101112
    13141516
    
          01
        0203
      040506
    07080910

#2


输入:9


输出:

010203040506070809
101112131415161718
192021222324252627
282930313233343536
373839404142434445
464748495051525354
555657585960616263
646566676869707172
737475767778798081

                                01
                            0203
                        040506
                    07080910
                 1112131415
             161718192021
         22232425262728
     2930313233343536
 373839404142434445

【题目分析】 

    做到这个题目的时候,我发现很多题解都采用了要判断是否自动补0,其实在这个题目中,自动补零这个操作实则没有必要,这里我们需要采用一种特殊的输出格式就可以解决。

    我们都知道,printf 可以控制输出的域宽,如:

int a = 4;

printf("%4d",a);         这里的输出结果就是:***4   (用"*"表示空格)

    但实际上,printf 也可以控制输出数据的格式,当不满足域宽时,自动补0,如:

int a = 4;

printf("%02d",a);       这里表示输出的域宽为2,当数据不满足域宽时,此时将自动补0,使数据靠右对齐。

既然解决了自动补0的问题,这个题的解法也就显而易见了,下面附上我的代码(C语言):

#include <stdio.h>


int main()
{
	int m;
	scanf("%d", &m);

	//利用count实现输出
	int count = 1;

	//打印矩形
	for (int i = 1; i <= m ; i++) {
		for (int j = 1; j <= m ; j++) {
			//这里利用了一种特殊的输出方式,使得在未满足域宽前,自动补0
			printf("%02d", count);
			count++;
			if (j % m == 0)
				printf("\n");
		}
	}

	count = 1;
	printf("\n");

	//打印三角形
	for (int k = 1; k <= m; k++) {
		for (int n = 1; n <= m; n++) {
			if (n <= m - k)
				printf("  ");
			else {
				printf("%02d", count);
				count++;
			}
			if (n == m)
				printf("\n");
		}
	}

}

 这是萌新第一次分享自己C语言学习过程中的一些小小的想法,希望大佬指正~!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值