国外c语言经典例题:打印一个规律独特的数字正方形

国外c语言经典例题:打印一个规律独特的数字正方形,第1张

原题目如下:
Print a pattern of numbers from 1to n as shown below. Each of the numbers is separated by a single space.

The input will contain a single integer n.

sample input
2
sample output

题目的中文意思是,用c语言设计一个程序,用户输入随机数字(1到100之间),即可打印出上述正方形图案。

思路:
根据图形和输入的数字观察,发现存在如下规律:
正方形边长=输入数字的两倍减1
每条边数字相同,越往里,边的数字减1.
好了,知道这两个规律,我们可以大致表述如下;

int len = n*2 - 1;
//边的规律

for(int i=0;i<len;i++){
        for(int j=0;j<len;j++){
        //定义两个变量,循环求出所有边的值
            int min = i < j ? i : j;
            //三目运算符比较这两个变量,因为正方中,大的数字的在外面
            min = min < len-i ? min : len-i-1;
            min = min < len-j-1 ? min : len-j-1;

本题答案:
好了,有了思路,本题自然轻松多了,因此本题求解如下:

#include 

int main() 
{

    int n;
    scanf("please input a number %d", &n);
    int len = n*2 - 1;
    for(int i=0;i<len;i++){
        for(int j=0;j<len;j++){
            int min = i < j ? i : j;
            min = min < len-i ? min : len-i-1;
            min = min < len-j-1 ? min : len-j-1;
            printf("%d ", n-min);
        }
        printf("\n");
    }
    return 0;
}

假设我们输入的数为5,输出结果如下:

真诚的希望这篇博客能帮助到正好遇到这个问题的其他同学。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/797714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存