题目描述
先要求你从键盘输入一个整数n(1<=n<=9),打印出指定的数字图形。
本题请注意循环输入
输入
输入包含多组测试数据。每组输入一个整数n(1<=n<=9)。
输出
对于每组输入,输出指定的数字图形。
注意:每行最后一个数字后没有任何字符。
样例输入
5
样例输出
解题思路链接
AC代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;
while (cin >> n)
{
//中心点坐标的选取:如输入5,则(5,5)为中心点
int cx = n;
int cy = n;
//从(1,1)点开始遍历坐标系
for (int i = 1;i <= 2 * n - 1;i++)
{
for (int j = 1;j <= 2 * n - 1;j++)
{
if (abs(cx - i) + abs(cy - j) == n - 1) printf("1");
else if (abs(cx - i) + abs(cy - j) == n - 2) printf("2");
else if (abs(cx - i) + abs(cy - j) == n - 3) printf("3");
else if (abs(cx - i) + abs(cy - j) == n - 4) printf("4");
else if (abs(cx - i) + abs(cy - j) == n - 5) printf("5");
else if (abs(cx - i) + abs(cy - j) == n - 6) printf("6");
else if (abs(cx - i) + abs(cy - j) == n - 7) printf("7");
else if (abs(cx - i) + abs(cy - j) == n - 8) printf("8");
else if (abs(cx - i) + abs(cy - j) == n - 9) printf("9");
else printf(" ");
}
printf("\n");
}
}
return 0;
}
但是让我疑惑的地方是如果不加else,就会输出很多空格,只有9后面就不输出,代码如下,有哪位大佬看见了麻烦帮忙解答
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;
while (cin >> n)
{
//中心点坐标的选取:如输入5,则(5,5)为中心点
int cx = n;
int cy = n;
//从(1,1)点开始遍历坐标系
for (int i = 1;i <= 2 * n - 1;i++)
{
for (int j = 1;j <= 2 * n - 1;j++)
{
if (abs(cx - i) + abs(cy - j) == n - 1) printf("1");
if (abs(cx - i) + abs(cy - j) == n - 2) printf("2");
if (abs(cx - i) + abs(cy - j) == n - 3) printf("3");
if (abs(cx - i) + abs(cy - j) == n - 4) printf("4");
if (abs(cx - i) + abs(cy - j) == n - 5) printf("5");
if (abs(cx - i) + abs(cy - j) == n - 6) printf("6");
if (abs(cx - i) + abs(cy - j) == n - 7) printf("7");
if (abs(cx - i) + abs(cy - j) == n - 8) printf("8");
if (abs(cx - i) + abs(cy - j) == n - 9) printf("9");
printf(" ");
}
printf("\n");
}
}
return 0;
}