我编译了这个程序,它正在接受输入,但在输入值后立即中止。我对C很陌生,所以任何帮助都会受到赞赏,谢谢。
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int height = 0;
do
{
printf("Enter a positie integer no larger than 23: ");
height = GetInt();
} while (height <= 0 || height > 23) ;
int space = height - 1, hash = 2, counter_1;
for (counter_1 = 1; counter_1 == height; counter_1++, hash++, space--)
{
int counter_2;
for (counter_2 = 0; counter_2 == space; counter_2++)
printf(" ") ;
int counter_3;
for (counter_3 = 0; counter_2 == hash; counter_3++)
printf("#");
printf("\n");
}
return 0;
}
答案 0 :(得分:2)
表达式counter1 == height
将始终为false(除非用户将高度输入为1),因此for循环将永远不会运行。
您的意思是counter1 <= height
吗?
for (counter_1 = 1; counter_1 <= height; counter_1++, hash++, space--) {
// ^^^^^^^^^^^^^^^^^^^
您可能还想从零开始计数器并改为使用counter1 < height
:
for (counter_1 = 0; counter_1 < height; counter_1++, hash++, space--) {
答案 1 :(得分:1)
您正在测试相等性(counter_1 == height
等),这意味着您执行循环为counter_1 == height
。
您需要执行直到 counter_1 == height
,或者换句话说 - counter_1 < height
。
答案 2 :(得分:0)
你检查for循环中的条件是否失败(如果你没有输入1),这就是为什么它退出for循环。在for循环之后,程序结束,因为只有外部for循环成功时才会执行其他for循环。
这就是为什么要进入外部for循环,你必须将你的条件改为counter_1 < height
答案 3 :(得分:0)
您必须替换==
循环中的!=
。所以第一个循环将执行到counter_1 != height
,第二个循环将执行到counter_2 != space
,最后第三个循环将从此更改:
for (counter_3 = 0; counter_2 == hash; counter_3++)
到
for (counter_3 = 0; counter_3 != hash; counter_3++)
我认为您的意思是counter_3 != hash
而不是counter_2 == hash
。
答案 4 :(得分:0)
您有两个错误:
==
或for
<
圈中的<=
counter_2
替换为counter_3