28

C に複数桁の整数があるとします。それを 1 桁の整数に分割したいとします。

12312、および に変わり3ます。

特に整数の桁数がわからない場合はどうすればよいですか?

4

10 に答える 10

48
int value = 123;
while (value > 0) {
 int digit = value % 10;
 // do something with digit
 value /= 10;
}
于 2012-02-15T22:52:02.883 に答える
8

まず、桁数を数えます。

unsigned int count(unsigned int i) {
 unsigned int ret=1;
 while (i/=10) ret++;
 return ret;
}

次に、それらを配列に格納できます。

unsigned int num=123; //for example
unsigned int dig=count(num);
char arr[dig];
while (dig--) {
 arr[dig]=num%10;
 num/=10;
}
于 2012-02-15T22:55:06.703 に答える
1

ヒントとして、数字の n 桁目を取得するのは非常に簡単です。10 で n 回割り、次に mod 10、または C:

int nthdig(int n, int k){
     while(n--)
         k/=10;
     return k%10;
}
于 2012-02-15T22:51:38.077 に答える
1

123 の最後の桁は 123 % 10 です。123/10 を実行すると、123 の最後の桁を削除できます。整数除算を使用すると、12 になります。 -- 上記のように実行してみてください。いつ停止するかを知る方法がわかります。

于 2012-02-15T22:53:16.627 に答える
0

以下のコードが役立つと思います....

temp = num;
while(temp)
{
    temp=temp/10;
    factor = factor*10;
}

printf("\n%d\n", factor);
printf("Each digits of given number are:\n");

while(factor>1)
{
    factor = factor/10;
    printf("%d\t",num/factor);
    i++;
    num = num % factor;
}
于 2013-11-01T16:31:44.743 に答える
-2

このプログラムを 3 つの引数を持つ関数として使用できます。ここで、"while(a++<2)" の 2 は必要な桁数です (1 つの引数として指定できます)。2 を必要な桁数に置き換えます。ここで、最後の特定の桁が必要ない場合は "z/=pow(10,6)" を使用できます。6 を必要のない桁数で置き換えます (別の引数として指定できます)。3 番目の引数は次のとおりです。あなたが破る必要がある数。

int main(){
long signed c=0,z,a=0,b=1,d=1;
scanf("%ld",&z);
while(a++<2){
       if(d++==1) 
       z/=pow(10,6);
       c+=(z%10)*b; 
       z/=10;
       b*=10;}
        return c;}
于 2015-09-13T13:53:37.523 に答える