C 如何将整数分割成多个数字?
我有一个求一个数的模的余数函数,然后有一个除法函数来除掉这个数。我的程序没有按我需要的方式运行。例如,如果我输入2502作为我的数字,我应该得到:2 5 0 2的输出。 我需要能够在每次迭代中存储值,例如:C 如何将整数分割成多个数字?,c,algorithm,C,Algorithm,我有一个求一个数的模的余数函数,然后有一个除法函数来除掉这个数。我的程序没有按我需要的方式运行。例如,如果我输入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 d
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
这里的想法很简单,但也有一些微妙之处。这里有一些伪代码。你需要转换成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);
我用做。。。而
循环,因此如果用户输入0,输出将是正确的
如果您对其进行编码并运行它,您会注意到它按相反顺序打印数字:4 3 9
。因此,在输出数字之前,您需要一些方法来反转数字。三种可能的方法是:
您还可以将其转换为字符串,然后再转换回该字符串的元素,但请记住“\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);
}
size\u t ft\u cnbr(int n)
{
大小/数量;
计数=1;
if(n<0)
{
计数++;
n=-n;
}
而(n>9)
{
n=n/10;
计数++;
}
返回(计数);
}
返回循环内部,这样循环只执行一次,即使循环运行多次,也不会更改初始值。如果你想在函数中这样做,你需要重新考虑你是怎么做的。您需要在调用之间保留状态。@RetiredInja,而不必重做我的整个结构,最有效的方法是什么?@EdwardElric what structure?您有两个功能,从一开始对其需求就非常值得怀疑。两者都返回一些值,但都不会被多次调用,尽管程序显然应该能够为输出生成多个值。不管怎样,这两个函数的结果都会被完全丢弃。在这一点上,我认为这比其他任何事情都更合适。现在就放弃寻找“高效的”。先为正确而射击。
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);
}