我在Objective-C中进行了一个练习,利用for
,if-else
和printf
在控制台中打印如下之字形:
请看图片:
我已经尝试过使用C编程编写代码,并打印一个三角形,然后尝试编辑该三角形,但是不能做任何其他事情来获得Zig-Zag。
我已经解决了我的问题。非常感谢你们。
for (int i = 0; i < 5; i++) {
for(int j = 1; j<= 21; j++ ){
if(j<=9){
if(j - i == 5 || j+ i == 5){
printf("*") ;
}else{
printf(" ");
}
}else{
if(j+i == 13 || j - i == 13 || j + i == 21){
printf("*") ;
}
else{
printf(" ");
}
}
}
printf("\n");
}
最佳答案
好的,根据您更新的问题尝试2。让我们从基本结构开始。设置一些const的宽度和高度-我们将在多个地方引用它们,以便const进行简单的更改-并创建一个具有基本逻辑的循环,以开始获取所需的显示。
const int numRows = 5;
const int numCols = 21;
for (int row = 0; row < numRows; ++row)
{
for (int col = 0; col < numCols; ++col)
{
if (col == row)
{
printf("X");
}
else
{
printf(" ");
}
}
printf("\n");
}
这给了我们:
X
X
X
X
X
这是错误的方法,只会给我们带来一次“降档”,但这是一个好的开始。让我们使用模数函数使图案重复。重复发生在第9个字符上,这表明我们需要使用((numRows-1)* 2)作为模数。
const int modulusVal = ((numRows - 1) * 2);
for (int row = 0; row < numRows; ++row)
{
for (int col = 0; col < numCols; ++col)
{
int modCol = (col % modulusVal);
if (modCol == row)
{
printf("X");
}
else
{
printf(" ");
}
}
printf("\n");
}
现在我们得到:
X X X
X X X
X X X
X X X
X X X
这开始越来越接近我们想要的东西。因此,继续进行。当modCol在行范围(0-4)内时,将显示向下笔划。当modCol超出此范围时,我们通过从中减去行数来使其回到范围内。
然后我们通过从行可以取的最大值减去它来“反转”它,即numRows-1。这意味着,当modCol为0时,它将变为4;当它为1时,它将变为3;当它为2时,它将变为3。将保持不变。
for (int row = 0; row < numRows; ++row)
{
for (int col = 0; col < numCols; ++col)
{
int modCol = (col % modulusVal);
if (modCol >= numRows)
{
modCol -= numRows;
modCol = ((numRows - 1) - modCol);
}
if (modCol == row)
{
printf("X");
}
else
{
printf(" ");
}
}
printf("\n");
}
现在我们得到:
X X X
X X X
X X X X X
X X X X X
XX XX X
关闭,但没有雪茄。第5列被视为第0列,但我们需要将其作为第1列。进行此更改以对其进行修复:
modCol = ((numRows - 1) - (modCol + 1));
Output:
X X X
X X X X X
X X X X X
X X X X X
X X X
这具有我们想要的模式,但是当我们想要左下方时,它从左上方开始。轻松修复。在计算了modCol后,以相同的方式将其反转。当它大于/等于numRows时,我们将其反转。
for (int row = 0; row < numRows; ++row)
{
for (int col = 0; col < numCols; ++col)
{
int modCol = (col % modulusVal);
if (modCol >= numRows)
{
modCol -= numRows;
modCol = ((numRows - 1) - (modCol + 1));
}
modCol = ((numRows - 1) - modCol);
if (modCol == row)
{
printf("X");
}
else
{
printf(" ");
}
}
printf("\n");
}
最后,我们得到所需的输出:
X X X
X X X X X
X X X X X
X X X X X
X X X
我希望这会有所帮助并且相当容易理解。
关于c - C编程之字形实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32003645/