![](/img/trans.png)
[英]How to compare the digits of 2 integer numbers in c (without arrays and strings)
[英]How do I turn an integer into an array of digits without using strings?
例如,取123並將其放入一個數組,其中是[3] = {1,2,3}?
不將其轉換為字符串並迭代它。
您可以使用整數除法和模數來獲取數字的十進制數字。
//Pseudo code
int[MAX_SIZE] result;
int index = 0;
while (workingNumber > 0)
{
digit = workingNumber % 10;
result[index] = digit;
workingNumber = workingNumber / 10; //Must be integer division
index++;
}
#include <math.h>
...
int number = 5841;
int size = log10(number) + 1;
int arr[size];
int i = size;
while(i >= 0)
{
arr[--i] = number % 10;
number /= 10;
}
首先,請記住,在C中,“char of char”和“string”之間唯一真正的區別是字符串,你將一個NUL-terminator放在char數組的末尾。
假設你想(例如)創建一個int(或long,或除char之外的其他東西)的數組,你通常會在除以10時取余數,並通過加'0'將其轉換為數字。 然后將數字除以10並重復直到它減小到零。 這會創建從最小到最重要的數字,因此您通常將它們存放在數組的末尾並向后開始向后工作。
#include <stdio.h>
#include <math.h>
#define LEN 3
int main(int argc,char* argv[])
{
int i = 123;
int a[LEN];
int digit;
int idx = log10(i);
do {
digit = i % 10;
i /= 10;
a[idx--] = digit;
} while (i != 0);
printf("a: { %d, %d, %d }\n", a[0], a[1], a[2]);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.