這個程式是住旅館,輸入正確的天數。只截取了其中的輸入天數函式部分。
有兩點不明白。
⑴while回圈中的條件。我理解為當days為1時,不進入回圈,輸入非1時才進入回圈(可又不符合只需輸入一遍正確天數的初衷)。
可運行時,無論我輸入什么數字(包括1)都不會進入回圈。(即程式符合要求)
即這個程式是對的,是滿足了要求。但我對其中的理解是有誤的。
⑵回圈中的scanf(‘’%*s‘’)
①*的作用是什么
②為什么要在這里加入這個陳述句?(我去掉這個陳述句后,程式可能會進入死回圈,我理解不到為什么)
uj5u.com熱心網友回復:
scanf的回傳值是正確得到的資料項個數。回圈里面的scanf是為了清除輸入緩沖區。
帶個*是表示這項算是輸入了,但是輸入后扔掉,不送給變數,所以后邊沒有跟著接受輸入的地址。
uj5u.com熱心網友回復:
*作用是懂了,其余還是不懂。。

uj5u.com熱心網友回復:
題主把這段代碼運行看看:#include <stdio.h>
int main()
{
int i,j,days1,days2,days3;
printf("input days1:");
i = scanf("%d",&days1);
printf("i=%d,dyas1=%d\n",i,days1);
printf("input days2 days3:");
j = scanf("%d%d",&days2,&days3);
printf("j=%d,dyas2=%d,days3=%d\n",j,days2,days3);
system("pause");
return 0;
}
//input days1:5
//i=1,dyas1=5
//input days2 days3:6 8
//j=2,dyas2=6,days3=8
//請按任意鍵繼續. . .
uj5u.com熱心網友回復:
額懂了,懂了。大神厲害。
uj5u.com熱心網友回復:
#include <stdio.h>
int main()
{
int days;
printf("你想住多少天?");
while(scanf("%d",&days)!=1)//當輸入不是數字時,進入回圈體,提示重新輸入,直到輸入數字
{ //但還是有漏洞的,輸入兩個數字時,它認了一個就算完成任務了。
scanf("%*s");
printf("please enter integer.\n");
}
printf("days=%d\n",days);
system("pause");
return 0;
}
//你想住多少天?A
//please enter integer.
//8 9
//days=8
//請按任意鍵繼續. . .
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/260738.html
標籤:新手樂園
下一篇:c語言作業,大神求解
