循环循环,但仍然难以理解
Loop loops, yet still having difficulties understanding
我目前正在学习 CS50 在线课程。 objective 是创建一组在马里奥第一层中找到的楼梯,就像下面由主题标签制成的楼梯一样。我已经能够打印用户输入的高度,但我的循环不会缩进任何标签来制作楼梯。有任何想法吗?
它应该是什么样子
##
###
####
#####
我的样子
#
#
#
#
代码:
#include <stdio.h>
int main(void)
{
int line = 0;
int blockHeight = blockHeight - 1;
int space = blockHeight - 1;
int hashes = 2;
do
{
printf("please give me a number between the range of 1 and 23:\n");
scanf("%i", &blockHeight);
}
while (blockHeight >= 1 != blockHeight <= 23);
{
printf("thanks for the correct answer!\n");
}
printf("\n\n\n");
for (int i = 0; i < blockHeight; i++)
{
for (int j = 0; j < space; j++)
{
printf(" ");
space--;
break;
}
for (int k = 0; k < hashes; k++)
{
printf("#");
hashes++;
break;
}
for (int z = 0; z < blockHeight; z++)
{
printf("\n");
break;
}
}
}
while (blockHeight >= 1 != blockHeight <= 23);
这不是一个有效的陈述。
- 操作数
!=
未在此类语句中使用。请改用布尔运算符(&&
、||
)。
在 do-while 循环之后的块中也有不必要的 {}
。
之所以单#
是因为无条件break
。打印单个 space.
后中断
for (int j = 0; j < space; j++)
{
printf(" ");
space--;//You don't want to decrement space here
break;// condition less breaks shouldn't be used. This stat
}
其他循环也是如此
1.
int blockHeight = blockHeight - 1;
int space = blockHeight - 1;
这是初始化变量的错误方法。
将其更改为
int blockHeight, space;
获得 blockHeight
的值后,您可以分配 space = blockHeight - 1;
(在 do-while 循环之后)
2.
do
{
printf("please give me a number between the range of 1 and 23:\n");
scanf("%i", &blockHeight);
}
while (blockHeight < 1 || blockHeight > 23); // write `||` instead of `!=`
printf("thanks for the correct answer!\n");
它将运行 do
直到满足条件。条件满足后打印while
.
后的信息
3.
for (int j = 0; j < space; j++)
{
printf(" ");
space--;
break;
}
将此更改为
for (int j = 0; j < space; j++)
{
printf(" ");
}
space--;
因为你在循环中写了 break;
所以 for 循环将只运行一次然后退出循环。
4.
for (int k = 0; k < hashes; k++)
{
printf("#");
hashes++;
break;
}
将此更改为
for (int k = 0; k < hashes; k++)
{
printf("#");
}
hashes++;
因为 break;
它将打印 #
一次并退出循环。
5.
for (int z = 0; z < blockHeight; z++)
{
printf("\n");
break;
}
不用写这个for循环。一行就够了。将其更改为
printf("\n");
6.
int main(void)
{
////
// your code
////
return 0; // write this line at the end
}
我目前正在学习 CS50 在线课程。 objective 是创建一组在马里奥第一层中找到的楼梯,就像下面由主题标签制成的楼梯一样。我已经能够打印用户输入的高度,但我的循环不会缩进任何标签来制作楼梯。有任何想法吗?
它应该是什么样子
##
###
####
#####
我的样子
#
#
#
#
代码:
#include <stdio.h>
int main(void)
{
int line = 0;
int blockHeight = blockHeight - 1;
int space = blockHeight - 1;
int hashes = 2;
do
{
printf("please give me a number between the range of 1 and 23:\n");
scanf("%i", &blockHeight);
}
while (blockHeight >= 1 != blockHeight <= 23);
{
printf("thanks for the correct answer!\n");
}
printf("\n\n\n");
for (int i = 0; i < blockHeight; i++)
{
for (int j = 0; j < space; j++)
{
printf(" ");
space--;
break;
}
for (int k = 0; k < hashes; k++)
{
printf("#");
hashes++;
break;
}
for (int z = 0; z < blockHeight; z++)
{
printf("\n");
break;
}
}
}
while (blockHeight >= 1 != blockHeight <= 23);
这不是一个有效的陈述。
- 操作数
!=
未在此类语句中使用。请改用布尔运算符(&&
、||
)。
在 do-while 循环之后的块中也有不必要的 {}
。
之所以单#
是因为无条件break
。打印单个 space.
for (int j = 0; j < space; j++)
{
printf(" ");
space--;//You don't want to decrement space here
break;// condition less breaks shouldn't be used. This stat
}
其他循环也是如此
1.
int blockHeight = blockHeight - 1;
int space = blockHeight - 1;
这是初始化变量的错误方法。 将其更改为
int blockHeight, space;
获得 blockHeight
的值后,您可以分配 space = blockHeight - 1;
(在 do-while 循环之后)
2.
do
{
printf("please give me a number between the range of 1 and 23:\n");
scanf("%i", &blockHeight);
}
while (blockHeight < 1 || blockHeight > 23); // write `||` instead of `!=`
printf("thanks for the correct answer!\n");
它将运行 do
直到满足条件。条件满足后打印while
.
后的信息
3.
for (int j = 0; j < space; j++)
{
printf(" ");
space--;
break;
}
将此更改为
for (int j = 0; j < space; j++)
{
printf(" ");
}
space--;
因为你在循环中写了 break;
所以 for 循环将只运行一次然后退出循环。
4.
for (int k = 0; k < hashes; k++)
{
printf("#");
hashes++;
break;
}
将此更改为
for (int k = 0; k < hashes; k++)
{
printf("#");
}
hashes++;
因为 break;
它将打印 #
一次并退出循环。
5.
for (int z = 0; z < blockHeight; z++)
{
printf("\n");
break;
}
不用写这个for循环。一行就够了。将其更改为
printf("\n");
6.
int main(void)
{
////
// your code
////
return 0; // write this line at the end
}