我需要編寫一個程序,要求您輸入數字,並且當您按下圓點時,它將結束循環並顯示有多少數字是正數以及有多少是負數,例如4 5 - 9。通過按點循環停止
程序應該顯示2個數字是正數,1是負數,但那不是我的問題。當我按下點時,我被困在循環應該停止的部分,牢記我們處於編程的初級階段,所以我不能使用花哨的東西。
正如你可以在這裏看到我試着給變量兩種類型(char
和float
),但這並不奏效,我認爲是因爲它使用了字符的值而不是數字本身。
int main()
{
float p, n;
char a;
n = 0;
p = 0;
do
{
printf("type a number");
scanf("%s&%f", &a);
if (a < 0)
{
n = n + 1;
}
else if (a > 0)
{
p = p + 1;
}
else
{
}
}
while (a != '.');
printf(" positive numbers are %2.0f \n negative numbers are %2.0f", p, n);
return 0;
}
我的編輯是清理你的代碼縮進,這使得它很難閱讀(*提示*:做一個谷歌搜索C格式標準)。您需要稍微取消混合您的代碼。你首先在'a'變量中進行掃描(你在哪裏以及如何得到''%s&%f「'作爲掃描格式字符串,你認爲這意味着什麼? - 你是否閱讀過'scanf'文檔? )。然後,您甚至在知道它是否是用戶輸入的數字之前將其與「0」進行比較。您需要(1)讀取輸入,(2)確定它是否是數字,如果是,則轉換;如果是「。」,則退出。 – lurker
對於計數,您應該使用整數('int'或其變體),而不是'float'。您可能想要讀取數字(輸入的數字是整數還是浮點數?),直到scanf()說「不是數字」。它會這樣做,當你輸入'.';它也會在你輸入'albatross'時做,或者你指出EOF。 (請注意,這樣可以避免「輸入內容既不是數字又不是'。」的情況下怎麼辦「)。然後您可以打印總計。進入時你應該忽略零點嗎?如果不是,則添加'int z = 0;'和'else z ++;'並打印它。 –
@lurker yes obviosly我的代碼是不正確的,否則我不會在這裏發佈它,「%s&%f」只是爲了查看我輸入的內容是否會被作爲一個字符和一個數字來表達,並據此使用,但我知道這是錯誤的,是的,我需要一種方式,讓它讀取我鍵入的內容,然後確定它是一個字符還是浮點數。有沒有辦法做到這一點 –