本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。
输入格式:
输入在一行中给出一个正的奇数n。
输出格式:
输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。
输入样例:
7
输出样例:
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
通过点:
模拟
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
int row = (n + 1) / 2;
for(int j = 1; j <= row; j++)
{
for(int i = row - j; i > 0; i--)
{
printf(" ");
}
for(int k = 0; k < (2 * j) - 1; k++)
{
printf("* ");
}
printf("\n");
}
for(int i = 1; i < row; i++)
{
for(int j = 0; j < i; j++)
{
printf(" ");
}
for(int k = (row - i) * 2 - 1; k > 0; k--)
{
printf("* ");
}
printf("\n");
}
return 0;
}
曼哈顿距离法
距离计算公式:
d = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ d=|x_1-x_2|+|y_1-y_2| d=∣x1−x2∣+∣y1−y2∣
#include <stdio.h>
#include <math.h>
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i ++) {
int flag = 0;
for (int j = 0; j < n; j ++) {
if (abs(i - n / 2) + abs(j - n / 2) <= n / 2) {
flag = 1;
printf("* ");
}
if (abs(i - n / 2) + abs(j - n / 2) > n / 2 && !flag){
printf(" ");
}
}
printf("\n");
}
return 0;
}