原题目如下:
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,输出结果如下:
真诚的希望这篇博客能帮助到正好遇到这个问题的其他同学。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)