2016-12-09 9 views
-3

このコードでは、5つの数字を入力して5つの数字をinint配列に格納し、それらの5つの数字をArray.butコードに出力したい場合は、残りの4つの数字。あなたのwhileループではCアレイ間違ったストレージの問題

#include <stdio.h> 
#include<stdlib.h> 
void main(){ 
    int Array[5]; 
    int i; 
    int l=0; 
    int k=0; 
    int j=0; 
    while(j<5) 
    { 
    printf("enter k value"); 
    scanf("%d",&k); 
    j++; 
    } 

    // loop through and insert a the value 
    // returned from the k . 

    for (i = 0; i < 5 ;i++){ 
    Array[i]= k; 
    } 

    // loop through and print out the values at 
    // each slot in the array 

    for (l = 0; l < 5;l ++) { 
    printf ("Value %i: %d\n", Array[l]); // this only printing out the last input that user entered . 
    } 
} 
+0

* firstループの配列要素に異なる値を割り当てるべきではありませんか?ここでは、* last *読み取り値だけを使用します。ちょうどデバッガを使用してコードを進めていれば、この問題は明らかに明白です。 –

+0

@Someprogrammerdude私はできない最初のループで配列要素を割り当てることが許されていたのかどうかという疑問を尋ねました。 –

+0

それで 'k'も配列にすることができなければ、あなたは嫌です。最初のループの 'Array'要素に代入するか、2番目の配列が必要です。 –

答えて

2

、以前にあった値を上書きし、kにするたびに値を読み取ります。次に、その単一の値を配列の各要素に代入します。したがって、すべての配列要素に同じ値が含まれます。

読み取りのループと割り当てのループの代わりに、関連する配列要素のアドレスを渡して一度に行います。

for (i = 0; i < 5 ;i++){ 
    scanf("%d", &Array[i]); 
} 

あなたは値が読み込まれ、その場合にはgetcharを使用してバッファをフラッシュすることを確認するためにscanfの戻り値にエラーチェックを行う必要があります注意してください。

+0

問題は私達がそれをすることを許可されていないことです –

+1

@RohitMereddyあなたはあなたの質問でそれを言及していたはずです。制限がある場合、それらが何であるかを知る必要があります。代わりに 'k'を読み込んで同じループの配列に代入することはできますか? – dbush

+0

@RohitMereddyしたがって、 'k'も配列*にする? –

関連する問題