2012-01-03 9 views
1

私がここで間違っているのは何ですか?それは非常に簡単なプログラミングであり、私は本当にこれを知っているべきですが、問題を見ることはできません! Scanfは方程式の結果を配列のそれぞれの位置に読み込んでいません。あなたがそれらをしたくないときに、最後のprintf結果をcで配列に読み取る

#include <stdio.h> 

int main(void) 
{ 
int numbers[4]; 

printf("Please enter 2 numbers:\n"); 
scanf("%d %d", &numbers[0], &numbers[1]); 

printf("Your 2 numbers added are: %d\n", numbers[0] + numbers[1]); 
scanf("%d", &numbers[2]); 

printf("Your 2 numbers subtracted are: %d\n", numbers[0] - numbers[1]); 
scanf("%d", &numbers[3]); 

printf("The results of your program are: %d, %d\n", &numbers[2], &numbers[3]); 

return 0; 
} 
+3

あなたは 'numbers [2] = numbers [0] + numbers [1];'をやっていますか? 'scanf'は、ユーザからの入力を取得し、内部計算の結果を取得しないようにします。 –

+0

それはちょうどヨアヒムが頭の爪を打つことです。私はscanfが問題であると疑っていました。しかし、コンソール・ラインから直接読み取る最良の方法は何ですか?私はちょうど数字[2] =数字[0] +数字[1]を行うことができることを知っていますが、私はちょうど異なるものを試しています – adohertyd

+0

みんなありがとう! – adohertyd

答えて

2

これを試してみてください:FINAに続いて

printf("Your 2 numbers added are: %d\n", numbers[2] = numbers[0] + numbers[1]); 
printf("Your 2 numbers subtracted are: %d\n", numbers[3] = numbers[0] - numbers[1]); 

printf("Your 2 numbers added are: %d\n", numbers[0] + numbers[1]); 
scanf("%d", &numbers[2]); 

あなたはこれを行うべきですあなたの配列の値を印刷するときにL出力は、アドレスの演算子を取る:

printf("The results of your program are: %d, %d\n", numbers[2], numbers[3]); 
+0

これはまさに私がJasonを探していたものです。私はこのことを知っているので面白いです。より進んだものを扱うときは、答えがそれよりも難しいはずだと思うので、基本は難しいかもしれません! :) – adohertyd

2

ルックあなたはそこ&年代を持っています。

+1

あなたが 'gcc'コンパイラを使った場合、' -Wall'フラグ(これは常に 'gcc'のために*使うべきです)によって、そのエラーが見つかるでしょう。 –

2
printf("The results of your program are: %d, %d\n", &numbers[2], &numbers[3]); 

printf("The results of your program are: %d, %d\n", numbers[2], numbers[3]); 

&オペレータは、与えられた変数のアドレスを取得しなければなりません。ここでは、変数のアドレスではなく、変数に格納されている値を出力したいだけです。

OTOHの場合、number[2]number[3]にはscanf()を入力する必要はありません。配列のサイズは4でなく、2とすることができます。

3
#include <stdio.h> 

    int main(void) 
    { 
    int numbers[4]; 

    printf("Please enter 2 numbers:\n"); 
    scanf("%d %d", &numbers[0], &numbers[1]); 

    printf("Your 2 numbers added are: %d\n", numbers[0] + numbers[1]); 
    numbers[2] = numbers[0] + numbers[1]; 

    printf("Your 2 numbers subtracted are: %d\n", numbers[0] - numbers[1]); 
    numbers[3] = numbers[0] - numbers[1]; 

    printf("The results of your program are: %d, %d\n", numbers[2], numbers[3]); 

    return 0; 
    } 

あなたが戻っstdinからstdoutの出力をパイプしていない限り、あなたはあなたに-行うここにしようとしているようにあなたが出力に印刷しているものを読み戻すことができません。..

1
printf("The results of your program are: %d, %d\n", numbers[2], numbers[3]); 

をあなたはnumber[2]number[3]に任意の値を与えていないので、これはnumber[2]number[3]におけるごみ値が得られます。

関連する問題