C に複数桁の整数があるとします。それを 1 桁の整数に分割したいとします。
123
1
、2
、および に変わり3
ます。
特に整数の桁数がわからない場合はどうすればよいですか?
int value = 123;
while (value > 0) {
int digit = value % 10;
// do something with digit
value /= 10;
}
まず、桁数を数えます。
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;
}
ヒントとして、数字の n 桁目を取得するのは非常に簡単です。10 で n 回割り、次に mod 10、または C:
int nthdig(int n, int k){
while(n--)
k/=10;
return k%10;
}
123 の最後の桁は 123 % 10 です。123/10 を実行すると、123 の最後の桁を削除できます。整数除算を使用すると、12 になります。 -- 上記のように実行してみてください。いつ停止するかを知る方法がわかります。
以下のコードが役立つと思います....
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;
}
このプログラムを 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;}