原题目如下:
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;ifor(int j=0;j //定义两个变量,循环求出所有边的值 int min = i < j ? i : j; //三目运算符比较这两个变量,因为正方中,大的数字的在外面 min = min < len-i ? min : len-i-1; min = min < len-j-1 ? min : len-j-1;
本题答案:
好了,有了思路,本题自然轻松多了,因此本题求解如下:
#includeint main() { int n; scanf("please input a number %d", &n); int len = n*2 - 1; for(int i=0;i for(int j=0;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,输出结果如下:
真诚的希望这篇博客能帮助到正好遇到这个问题的其他同学。



