C语言 Pset 1(马里奥不太难)



这个程序不运行它只是要求高度,然后从那里没有进一步的东西。当我运行检查 50 时,它指示我接受 foo 和其他 a 等值,所以我用 scanf 替换了 printf,一切都停止了工作。

也有人可以指导我如何使程序不断要求 2 到 8 之间的高度直到它的真实?截至目前,它会发出一条消息,输入 2 和 8 之间的数字并停止。

int main()
{
int height;
do {
height =get_int("Height: ");
scanf("%d", &height);
if ( height<1 || height>8) { 
printf ("Kindly Enter A Number Between 2 & 8 !n"); 
return 0;
}
}
while (height <1 || height>8);
for(int i=0; i<height ; i++) // Row Number
{
for (int j=0; j<height ;j++)
{
if (i+j >= height-1)
printf("#");
else 
printf (" ");
}
printf("n");
}
}

删除if语句中的return 0;语句。main函数中的return语句会立即终止程序。

为什么要height两次:

height =get_int("Height: ");
scanf("%d", &height);

这就足够了:scanf("%d", &height);

也总是检查scanf的回报。

如前所述,删除return 0因为否则当您到达它时,您的程序将立即结束。

我假设你想要的是这样的东西:

int height;
do {
if (scanf("%d", &height) == 1);//checking the result of scanf function
else
exit(EXIT_FAILURE);
if (height < 1 || height>8) {
printf("Kindly Enter A Number Between 2 & 8 !n");
//removing return 0
}
}
while (height < 1 || height>8);

最新更新