C语言用二维数组代码打印不出菱形

2020-05-01 13:26发布

问题:

我想打印这样的图形

首先建立了两个二维字符数组:
dia1[5][10]用来表示菱形1-5行;
dia2[4][10]用来表示菱形6-9行。
第一个和第二个大循环分别给菱形的上半部分元素和下半部分元素赋值,
在给菱形上半部分赋值的时候,我按行循环赋值,我的思路是这样子的:
当列标在(3-i)到(5+i)之间时,就是要打印星号的地方,其他的就打印空格,
但是我调试的时候发现它总是判断列标在(3-i)到(5+i)之间,因此只打印*,不打印空格,
就是这点我想不通。

include "stdio.h"

main ()
{
char dia1[5][10] = {0}, dia2[4][10] = {0};
int i, j, min, max;
for (i = 0; i < 5; i++)
for (j = 0; j < 9; j++)
{
min = 3 - i;
max = 5 + i;
if (min < j < max)
dia1[i][j] = '';
else
dia1[i][j] = ' ';
}
for (i = 0; i < 4; i++)
for (j = 0; j < 9; j++)
{
if (i < j < 8 - i) dia2[2][j] = '
';
else dia2[i][j] = ' ';
}
for (i = 0; i < 5; i++)
{
puts (dia1[i]);
printf ("\n");
}
for (i = 0; i < 4; i++)
{
puts (dia2[i]);
printf ("\n");
}
}

回答1:

if 后面的表达式不能那样写,得写成 if (j >= min && j <= max)



回答2:

1.可能是复制粘贴的问题,我这里看你的代码出了一些错误,你挑着看(我自己复制过来缩进了一下)

(1)这里的'*'没有出现

(2)

这里出现了两个问题,

1) C语言中不能a<b<c,而应该写成a<b&&b<c
2)dia2[i][j]你写成了dia2[2][j];