1
我正在嘗試使用do-while
執行一個小程序。無法完全執行do-while循環
#include<stdio.h>
#include<conio.h>
void main()
{
char another;
int num;
do
{
printf("Enter a number");
scanf("%d",&num);
printf("Square of %d id %d",num,num*num);
printf("Want to another another number y/n");
scanf("%c",&another);
}while(another=='y');
}
現在,當我嘗試執行該程序時,它運行良好。我輸入一個數字並顯示它的正方形。然後我看到Want to enter another number y/n
。但只要按任意鍵(y或n),程序就會自行退出,然後按Enter鍵提供輸入。我嘗試了很多次,但沒有成功。
但是,如果我要求用戶輸入1或2(代替y/n),程序運行良好。在這種情況下,它需要一個整數輸入,並可以檢查while塊。如果another == 1
,程序再次運行。
我的問題是,爲什麼我無法檢查while
條件中的字符。
感謝兄弟。你真的幫了我很多。我厭倦了想我的代碼有什麼問題。你救了我。但是,你能解釋一下爲什麼我需要%c之前的空間,而不需要%d? –
@ user2899258基本上,這是因爲一個新的行字符是一個有效的字符,但不是一個有效的整數,所以當格式說明符具有''''''''''或''時,'scanf'將只處理空格字符(包括新行) 'N'。在'%c'之前添加一個空格會使'scanf'忽略所需字符之前的任何空格。 –