2011-02-04 25 views

答えて

3

%はモジュロ(剰余)演算子です。あなたのケースでは、試してみてください:

int weeks = total_days/7; 
int remaining_days = total_days % 7;  
0

実際には、合計日数を7で割ると、その週が得られます。 あなたは7で合計日数をモジューロすることができます。残りの日数を取得します。 これは十分ではありません

0

%(モジュラス演算子)は残りを与えます。したがって、%7日は週に変換した後に残された日数を与えます。つまり、日数が15の場合、%7の日数は1になります。

1

奇妙なことに、「私は知っています」と言われると、しばしば間違っています。 モジュラス(%)を必要としません。

int weeks = total_days/7; 
printf("%d days is equal to %d weeks and %d days.\n", 
     total_days, weeks, total_days - weeks*7); 
+0

モジュラスを使用する方が簡単で高速ですが。 – Olhovsky

+0

@TheBigO、もっと簡単かもしれませんが、モジュラスの実装では内部的に同じ式を使用し、コンパイラの最適化が本当に良い場合を除いて、おそらく7で除算を繰り返すことになります。 –

+1

@ Karl:一部のCPUは、単一の命令で商と剰余の両方を見つけることができます。しかし、ここでは定数による除算があるので、コンパイラの最適化があれば、マジックナンバーとビットシフトによる乗算を使って '週'を計算し、整数除算は必要ありません。 @TheBigO:コンパイラは 'total_days%7'を同じコードに最適化することができます。モジュロを使用しない主な目的は、問題の質問者に問題を考えるように挑戦し、モジュロの使用が宿題であるか、単に「聞いたことが必要なのか」を教えてください。 –