3

私はプログラミングが初めてで、問題に行き詰まっています。入力した場合のように、プログラムで特定の数字の個別の数字を4692識別し、数字を識別して出力する必要があります4 6 9 2。ええ、配列を使用せずに。

4

7 に答える 7

26

あなたがプログラミングに慣れていない場合に取り組むのに最適な再帰問題...

4692/1000 = 4

4692%1000 = 692

692/100 = 6

692%100 = 92

92/10 = 9

92%10 = 2

どのような数でも機能するように、今使用する必要があるループのアイデアを得る必要があります。:)

于 2009-06-11T13:45:36.047 に答える
1

シンプルでいい

void PrintDigits(const long n)
{
    int m = -1;
    int i = 1;

    while(true)
    {
        m = (n%(10*i))/i;
        i*= 10;
        cout << m << endl;

        if (0 == n/i)
            break;
    }
}
于 2014-05-21T05:54:09.607 に答える
0

数値から数字を印刷するだけの場合の簡単な解決策を次に示します。

#include <stdio.h>
/**
printdigits
*/
void printDigits(int num) {

   char buff[128] = "";
   sprintf(buff, "%d ", num);
   int i = 0;
   while (buff[i] != '\0') {
      printf("%c ", buff[i]);
      i++;
   }
   printf("\n");
}
/*
main function
*/
int main(int argc, char** argv) {
   int digits = 4321;
   printDigits(digits);
   return 0;
}
于 2009-09-29T18:15:12.663 に答える
0

アイデアは、繰り返さない数字を印刷することだと思います(そうしないと、単純すぎるでしょう)...まあ、別の整数でそれらをエンコードする配列を持たなくても、すでに印刷された整数を追跡できます。

手がかりを与えるために、いくつかの擬似C:

int encoding = 0;
int d;

while (keep_looking()) {
  d = get_digit();
  if (encoding/(2**d)%2 == 0) {
    print(d);
    encoding += 2**d;
  }
}
于 2009-09-29T18:38:12.307 に答える