所以我只用C++編程,但我必須做一個小功課,需要使用c。我遇到的問題是我需要循環讀取用戶空格分隔的數字(如:1 5 6 7 3 42 5),然後取這些數字並填充數組。簡單的C循環讓我瘋狂
我寫的代碼是這樣的:
int i, input, array[10];
for(i = 0; i < 10; i++){
scanf("%d", &input);
array[i] = input;
}
編輯:加入數組定義。 任何建議或提示將非常感激。
所以我只用C++編程,但我必須做一個小功課,需要使用c。我遇到的問題是我需要循環讀取用戶空格分隔的數字(如:1 5 6 7 3 42 5),然後取這些數字並填充數組。簡單的C循環讓我瘋狂
我寫的代碼是這樣的:
int i, input, array[10];
for(i = 0; i < 10; i++){
scanf("%d", &input);
array[i] = input;
}
編輯:加入數組定義。 任何建議或提示將非常感激。
我不是ac程序員,但我可以建議一個算法,它使用scanf(「%s」,& str)讀取char []數組的所有輸入,然後循環使用if如果當前字符是空格,則表示當前字符是空格,然後將前一個數字添加到數組中
此代碼正常工作。
如果您的數字小於10,那麼在開始讀取這些數字之前,您必須知道有多少個數字,或者最後一個數字必須是0才能終止輸出,然後您可以執行while(true)
循環,但對於動態解決方案必須將所有行讀入字符串,然後使用sscanf
來讀取此字符串中的數字。
無論這裏出現什麼問題,您都應該快速學會不寫代碼,不會檢查您所做的任何API調用的返回值。 scanf
會返回一個值,並且您必須對它所說的內容感興趣。如果通話失敗,你的邏輯是不同的,是的?
也許在這種情況下,它會告訴你發生了什麼問題。該文檔是here。
返回成功轉換和分配的字段數 ; 返回值不包括 被讀取的字段,但不包括 分配的字段。返回值爲0 表示沒有字段被分配爲 。
你需要正確的#include
和一個合適的主。以下作品適用於我
#include <stdio.h>
int main(void) {
/* YOUR CODE begin */
int i, input, array[10];
for (i = 0; i < 10; i++) {
scanf("%d", &input);
array[i] = input;
}
/* end of YOUR CODE */
return 0;
}
那麼當你運行這個時出了什麼問題? – 2010-11-23 23:46:13
你的數組定義在哪裏? – 2010-11-23 23:46:16
請向我們展示`array`的聲明。 – jason 2010-11-23 23:46:22