请使C语言编写如下代码编写程序,输出由*构成的n行n列的菱形图案。 输入格式: 输入一个奇数n(0<n<80)。 输出格式: 若n<1,则输出Error。 若n为奇数,则输出由*构成的n行n列的菱形图案(每行输出n个符号:`星号`或者`空格`)。 若n为偶数,则输出Invalid。 输入样例: 9 输出样例: * *** ***** ******* ********* ******* ***** *** *
时间: 2023-06-01 16:06:13 浏览: 133
以下是C语言编写如下代码的程序,可以输出由*构成的n行n列的菱形图案:
```
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
if (n % 2 == 0) {
printf("Invalid\n");
return 0;
}
if (n < 1) {
printf("Error\n");
return 0;
}
int mid = n / 2 + 1;
for (int i = 1; i <= n; i++) {
if (i <= mid) {
int space = mid - i;
for (int j = 1; j <= space; j++) {
printf(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
printf("*");
}
printf("\n");
} else {
int space = i - mid;
for (int j = 1; j <= space; j++) {
printf(" ");
}
for (int j = 1; j <= 2 * (n - i) + 1; j++) {
printf("*");
}
printf("\n");
}
}
return 0;
}
```
该程序首先读入一个奇数n,如果n是偶数则输出"Invalid",如果n小于1则输出"Error";否则计算出菱形的中心行mid,并对每一行进行输出。对于第i行,如果i不超过mid,则需要先输出mid-i个空格,然后输出2i-1个星号;否则需要先输出i-mid个空格,然后输出2(n-i)+1个星号。输出完一行之后要记得换行。
阅读全文