2012-03-08 5 views
1

私はCの初心者です。ベクトル乗算コードを書き込もうとしています。私は配列とスケールを読みました。次に、この尺度に配列の各要素を掛けます。scanfで整数値を読み取ったときの予期しない乗算結果

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

puts("Please enter the scale:"); 
scanf("%d", s); 

puts("The scaled vector is:"); 

for (j = 0 ; j < 5 ; j++) 
{ 
    int r = numbers[j] * s ; 
    printf("%d\n", r); 
} 

私はこのコードを実行するときしかし、私は、次の入力で予期しない値を受け取る:

1 
2 
3 
4 
5 

スケール:

2 

出力:

6130616 
12261232 
18391848 
24522464 
30653080 

Iここにsを置き換えてください01たとえば、は2で、期待される出力を返します。彼は右の数行上のそれをしなかったので、おそらくそれはタイプミスだ

puts ("Please enter the scale:"); 
scanf ("%d" , &s); 

答えて

6

は、scanf関数へのポインタを送信します。ところで、私はそれに気付かなかった;)
+1

:あなたが値を得ることができるように – BlackBear

+0

+1、私は彼のコンパイラが同意したと思う(*初期化されていないローカル変数の使用*など)。 – user7116

関連する問題