0

以下のコード スニペットは、ユーザーから整数 (数値) を取得し、その数値のすべての桁数を出力しますが、どこかに 0 を含む数値を入力すると、すぐに while ループから抜け出します ( while ループ条件)。このバグを修正しようとしましたが、できませんでした。それを修正するのを手伝ってくれませんか。ありがとうございました。

int count = 0;
int rem = number % 10;

while(rem != 0) {
   number /= 10;
   ++count;
   rem = number % 10;

}//end while

printf("The count is %d", count);

コードを共有する必要はありません。テキストで説明していただければ幸いです。

ありがとうございました。

4

5 に答える 5

2

すべての桁を数えるために、数字の余りを取る必要はありません。0に達するまで10で割り続けてください。

while(number != 0) {
  number /= 10;
  ++count;
}
于 2012-09-01T17:04:31.103 に答える
2

おそらく次のようになります。

while (number != 0)

rem桁数を数える以上のことを計画していない限り、他のもの ( et al) は必要ないようです。いずれにせよ、あなたはおそらくrem = number % 10;分割の前に望んでいます。

于 2012-09-01T17:00:43.357 に答える
1

0で数値を入力したときにループが終了する理由はwhile、ループ条件がであるためですrem != 0。見てみるremと、の最後の桁になりnumberます。while (number != 0)したがって、すべての桁を確実にループする必要があります。

于 2012-09-01T17:05:11.097 に答える
1

(さあ、これは小学校の数学です!)

どこかにゼロがある場合、10 を法とする 0 は 0 になるので (他に何が期待できますか?)、自然にループを終了します。必要なのは、数値自体がすべて右にシフトされて最終的に 0 になったかどうかを確認することです。

while (number != 0)
于 2012-09-01T17:03:23.413 に答える
1

前の4つの回答すべてで述べたように、ループは

while(number > 0) {
   ++count;
   number /= 10;
}//end while

もう 1 つのオプションは、ユーザー入力を文字列のままにして (数値がパラメーターとしてプログラムに渡されると仮定して)、文字列の長さだけを出力することです。

char number[30];
strcpy(number,argv[1]);
printf("The count is %d\n", strlen(number));
于 2012-09-02T02:05:34.567 に答える