2014-01-20 24 views
4

我在c編程和一般編程方面比較新。數組如何在「for」循環中工作(C語言)

1)我試圖創建一個名爲將被用於用戶輸入(和陣列將僅使用兩個整數元素「輸入」)的陣列。

2)我想用for循環,因此遍歷我的代碼的2倍,這樣我就可以複製printf語句「輸入一個整數,」無我多次鍵入printf語句。然後我的scanf佔位符將基於我的數組「輸入」。

3),那麼我想這兩個數字加在一起的總和。

問題:當用戶輸入一個數字,例如,1,然後再次輸入1時,輸入[0]處的索引爲1,但輸入[1]處的索引爲1 ...

我會用另外的嘗試和解釋。 當我除了嘗試以輸出數字(整數[0]爲1,整數[1]是2和我的變量,將它們相加是「總」)1得到這樣的:1 + 2 = 2。

那麼,爲什麼是輸入[0]是正確的,但輸入[1]似乎被相加兩個用戶輸入一起並將其存儲在那裏?

這裏是我的代碼提前

int main() 
{ 
    int input[1]; 
    for(int i = 0; i < 2; i++) 
    { 
     printf("Please enter an integer: "); 

     scanf("%d", &input[i]); 

    } 
    int total = input[0]+input[1]; 
    printf("%d + %d = %d ", input[0], input[1], total); 


} 

謝謝,我希望你理解我。對不起,我是一個noob,學習基礎知識,所以我可以成爲先進的。

+0

非常感謝你們!我感謝你的幫助和解釋哈哈。我覺得很愚蠢。 – user2374254

+0

請接受答案(您發現的答案):)。每個人都是某個時間點的初學者,所以冷靜:) – SoulRayder

回答

1

既然你想兩個整數數組你應該使用

int input[2]; 

。否則,它只會爲您分配一個整數數組,並且在這種情況下訪問輸入[1]將無法正常工作。

也試試這個擴展到添加n個整數。

int main() 
{ 
int input[1]; 
int total = 0; 
int n; //To count number of elements to add: 
    printf("Please enter the number of elements to add: "); 

    scanf("%d", &n); 

for(int i = 0; i < n; i++) 
{ 
    printf("Please enter integer %d: ",(i+1)); 

    scanf("%d", &input[i]); 

} 

for(int i = 0; i < n; i++) 
{ 
    total = total +input[i]; 

} 

printf("The sum is = ", total); 


} 
數組中

所以,在我使用了循環指示,你會被利用其指數的,你也增加訪問單一元素的輸入一個陣列中的每個迭代在每次迭代中。

在你的情況下,只有兩個元素,所以它只需要兩次迭代。

3

此線

INT輸入[1];

將創建一個尺寸只的陣列。我可以看到你正在嘗試訪問數組的第二個元素。

所以只用

INT輸入替換您這行[2];

這將解決您的問題。 或把整個事情

int main() 
{ 
    int input[2]; 
    for(int i = 0; i < 2; i++) 
    { 
     printf("Please enter an integer: "); 

     scanf("%d", &input[i]); 

    } 
    int total = input[0]+input[1]; 
    printf("%d + %d = %d ", input[0], input[1], total); 


} 
0

使用這樣

int main() 
{ 
    int input[2]; //initializes array of size 2,which can contain maximun 3-->(0,1,2) 
    for(int i = 0; i < 2; i++) 
    { 
     printf("Please enter an integer: "); 

     scanf("%d", &input[i]); 

    } 
    int total = input[0]+input[1]; 
    printf("%d + %d = %d ", input[0], input[1], total); 


} 

OR使用i<=2

int main() 
{ 
    int input[1]; //initializes array of size 1 which can contain -->(0,1),or use i<=2 
    for(int i = 0; i <= 2; i++) 
    { 
     printf("Please enter an integer: "); 

     scanf("%d", &input[i]); 

    } 
    int total = input[0]+input[1]; 
    printf("%d + %d = %d ", input[0], input[1], total); 


}