Identify the digits in a given number.

此生再无相见时 提交于 2019-11-26 22:06:38

问题


I'm new to programming, and I'm stuck at a problem. I want my program to identify the separate digits in a given number, like if I input 4692, it should identify the digits and print 4 6 9 2. And yeah, without using arrays.


回答1:


A perfect recursion problem to tackle if you're new to programming...

4692/1000 = 4

4692%1000 = 692

692/100 = 6

692%100 = 92

92/10 = 9

92%10 = 2

You should get the idea for the loop you should use now, so that it works for any number. :)




回答2:


Haven't written C code in year, but this should work.

int i = 12345;

while( i > 0 ){
   int nextVal = i % 10;
   printf( "%d", nextVal );
   i = i / 10;
}



回答3:


Simple and nice

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;
    }
}



回答4:


I think the idea is to have non reapeating digits printed (otherwise it would be too simple)... well, you can keep track of the already printed integers without having an array encoding them in another integer.

some pseudo C, to give you a clue:

int encoding = 0;
int d;

while (keep_looking()) {
  d = get_digit();
  if (encoding/(2**d)%2 == 0) {
    print(d);
    encoding += 2**d;
  }
}



回答5:


Another approach is to have two loops.

1) First loop: Reverse the number.

int j = 0;
while( i ) {
   j *= 10;
   j += i % 10;
   i /= 10;
}

2) Second loop: Print the numbers from right to left.

while( j ) {
   std::cout << j % 10 << ' ';
   j /= 10;
}

This is assuming you want the digits printed from right to left. I noticed there are several solutions here that do not have this assumption. If not, then just the second loop would suffice.




回答6:


Here is a simple solution if you want to just print the digits from the number.

#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;
}



回答7:


Is it correct

int main()        
{
    int number;
    cin>>number;
    int nod=0;
    int same=number;

    while(same){
        same/=10;
        nod++;
    }

    while(nod--){               
        cout<<(int)number/(int)pow10(nod)%10<<"\t";       
    }
    return 0;
}


来源:https://stackoverflow.com/questions/981162/identify-the-digits-in-a-given-number

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!