所以我想编写一个程序,打印出由“ O”制成的金字塔,金字塔的高度由用户输入确定。
#include <stdio.h>
int main()
{
int n, i, j, k;
scanf_s("%d", &n);
{
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n - i; j++)
{
printf(" ");
}
for (k = 1; k <= 2 * i - 1; k = k + 1);
{
printf("O");
}
printf("\n");
}
return 0;
}
}
我是一个完整的初学者,因此,如果您有任何建议,请务必提供。无论如何,我尝试在Android的编译器上运行它;看起来很有效,将金字塔打印出来。
在Microsoft Visual Studio上进行了尝试。命令行打开,但是在我输入数字并按“ enter”后,整个窗口只是关闭而没有给我任何东西。我该如何预防?不需要用户输入的程序似乎可以正常运行。
答案 0 :(得分:3)
对于您描述的问题:Preventing console window from closing on Visual Studio C/C++ Console application
对于您的代码,似乎有一个错误,当前您的代码不会产生金字塔,而是产生斜杠O
。解决此问题的方法:
for (k = 1; k <= 2 * i - 1; k = k + 1);
从此行中删除;
。 为什么这可以解决问题?
如果循环后有;
,则表示循环不执行任何操作,然后接下来的三行是:
{
printf("O");
}
这意味着只有一个O
打印出来,而不是循环打印。
答案 1 :(得分:1)
除了for (k = 1...
循环后的分号外,此代码中没有错误;如果Visual Studio关闭,则问题出在该程序上。 (很可能因为程序已完成执行而将其关闭,但我不知道该程序。)
由于您写道自己是一个完整的初学者,并且希望您提供一些建议,因此我将提供一些风格上的注释。但这只是关于如果我是我时我将如何做事的评论,我并不是说您拥有的是错误的。
for (dex = 0 ; dex < max_val ; dex++)
的形式编写循环的习惯会对您有好处。请注意,比较是“ dex 答案 2 :(得分:0)
一旦控制台应用程序从main方法返回,关联的控制台窗口就会自动关闭。对于Windows操作系统,在您的Store
语句之前添加system("pause");
。对于独立于平台的解决方案,您只需向用户显示提示并等待按键,然后再从main返回即可。输入缓冲区中剩余的任何字符(在这种情况下,从scanf输入)都必须清除。
return 0;
答案 3 :(得分:0)
您应该在程序中包含conio.h头文件,然后只需将getch();在程序的最后一个cout语句之后。
我认为这将有助于关闭窗口 它对我有用;)
答案 4 :(得分:0)
在 return 0; 之前的最后放置一个 cin 命令(C++) 或等效的 C,这样它就不会关闭。 :> 例如:
.
.
.
.
int control; cin>>control;
return 0;
}