我如果输入奇数上面我写的程序还是错的,为什么
时间: 2024-02-12 11:04:54 浏览: 17
pll.rar_PLL verilog_PLL奇数分频器_verilog PLL程序
如果输入一个奇数,你的程序也有可能出现问题。具体地说,当输入奇数个字符时,上半部分的三角形行数为 `(n/2+1)` 行,下半部分的三角形行数为 `(n/2)` 行。因此,下半部分的循环条件应该是 `i<=(n/2)*2`,而不是 `i<=(n/2+2)`。修改后的程序如下:
```c
#include <stdio.h>
int main(void) {
int i, j, n;
scanf("%d", &n);
for (i = 1; i <= (n / 2 + 1); i++) {
for (j = 1; j <= n; j++) {
while (j >= (n / 2 - i + 2) && j <= (n / 2 + i)) {
printf("*");
j++;
}
printf(" ");
}
printf("\n");
}
for (i = (n / 2 + 2); i <= (n / 2) * 2; i++) {
for (j = 1; j <= n; j++) {
while (j <= i - (n / 2) || j >= n - (i - (n / 2)) + 1) {
printf(" ");
j++;
}
printf("*");
}
printf("\n");
}
return 0;
}
```
这个程序会正确地输出一个菱形,无论输入的是奇数还是偶数个字符。
阅读全文