我有一个余数函数,该函数求一个数字的模,然后用一个除法器函数对该数求和。我的程序无法按我需要的方式工作。例如,如果我输入2502作为我的数字,我应该得到以下输出:2 5 0 2。 我需要能够在每次迭代中存储值,例如:
number: 123
123 % 10 = 3 //last digit
Number: 123 / 10 = 12
12 % 10 = 2 //second digit
Number: 12 / 10 = 1
1 % 10 = 1 //first digit
int Rem(int num);
int Div(int num);
int main() {
int num;
printf("Enter an integer between 1 and 32767: ");
scanf("%d", &num);
Rem(num);
Div(num);
printf("%d","The digits in the number are: ");
}
int Rem(int num) {
while(num != 0){
int rem = num % 10;
return rem;
}
}
int Div(int num){
while(num != 0){
int div = num / 10;
return div;
}
}
答案 0 :(得分:1)
这里的想法很简单,但是有一些细微之处。这是一些伪代码。您需要转换为C。
num = 9934; // or get it from input
do {
rem = num % 10; // this gives you the lowest digit
num = num / 10; // divide by 10 to get rid of that lowest digit
print rem;
} while (num != 0);
我使用do ... while
循环,因此如果用户输入0,输出将正确。
如果对此进行编码和运行,您会注意到它以相反的顺序打印数字:4 3 9 9
。因此,在输出数字之前,您需要某种方式来反转数字。三种可能的方式是:
答案 1 :(得分:0)
您也可以将其转换为字符串,然后再转换回该字符串的元素,但请记住'\ 0'
答案 2 :(得分:0)
您可以简单地使用此函数,它返回通过参数传递的位数
size_t ft_cnbr(int n)
{
size_t count;
count = 1;
if (n < 0)
{
count++;
n = -n;
}
while (n > 9)
{
n = n / 10;
count++;
}
return (count);
}