c-有可能在以后的循环迭代中增加模运算符吗



我正试图构建一个简单的程序,将一个长数字的数字相加。我试图通过使用一个使用模运算符和一些基本算术的循环来实现这一点。我想通过在循环的每次迭代中将模运算符乘以10来增加模运算符,以便达到下一个数字。我想检查我的代码是否正确,但是,我收到了与涉及模运算的行有关的错误,我不太确定为什么。

这是我尝试的构建:

{
long i = 0;
long b;
int m = 1;
do
{
long number = get_long("Number?n");
long a = number % m;
b = number - a;
long c = b % m x 10;
long d = c / m;
{
i = i + d;
}
{
m = m x 10
}
}
while (b > 0);
printf("%ldn", i);
}

编辑:

我犯了一个基本错误:;x〃;而不是"*&";。然而,在修复了这个问题之后,我不再接收错误,而是程序简单地返回";0〃;。任何诊断都将不胜感激。

int main(void)
{
long i = 0;
long b;
int m = 10;
long number = get_long("Number?n");
do
{
long a = number % m;
b = number - a;
long c = b % m * 10;
long d = c / m;
{
i = i + d;
}
{
m = m * 10;
}
}
while (b > 0);
printf("%ldn", i);
}

对于您修改后的代码:

long c = b % m * 10;

这一行将计算CCD_ 1,然后由于运算的顺序而将其乘以10。我想你真正想要的是:

long c = b % (m * 10);

其次,下面的行决定了您从哪个数字开始:

int m = 10;

这一行决定了你的总数中包含的数字之间的位数:

m = m * 10;

因此,对于这种配置,它将从右边的第二位开始,并将每个数字相加。所以对于数字1234,你得到的是3 + 2 + 1 = 6

如果你想添加每个数字,你可以设置:

int m = 10;

你会得到4 + 3 + 2 + 1 = 10

或者,如果您使用过:

m = m * 10;

你会有3 + 1 = 4

首先,您可能会因为以下几行而出现错误:

long c = b % m x 10;
m = m x 10

这是因为x不是有效的运算符。乘法运算符为*:

long c = b % m * 10;
m = m * 10;

至于您的方法,我建议您不要更改模操作数,只需将原始数字除以10,每次运算将其移位一位。

例如:

#include <stdio.h>
int main()
{
int sumofdigits = 0;
int num = 12345;

while(num > 0) {
sumofdigits += num % 10;
num /= 10;
}

printf("%d", sumofdigits);
return 0;
}

一个数字的位数的减少和与该数字的模9相同。

示例:

#include <stdio.h>
int main(void) {
int number = 57283;

printf("%d n", number%9);
// 5 + 7 + 2 + 8 + 3 == 25 ==> 2 + 5 == 7
// 57283 % 9 == 7
return 0;
}

如果你想使用循环来获得减少的总和:

int sum_of_digits(int num)
{
int sum;
do
{
sum = 0;
while(num)
{
sum += num%10;
num /= 10;
}
num = sum;
} while (sum >9);
return sum;
}

但如果你只想要简单的数字和(只需一次(:

int sum_of_digits(int num)
{
int sum = 0;
while(num)
{
sum += num%10;
num /= 10;
}
return sum;
}

您必须通过两个运算符modulo(%(和division(/(找到long类型变量的数字之和,您从运算符modulo开始查找除法的余数(数字(,然后将该degit添加到和中,然后进行除法/10以覆盖(求和的数字(,直到数字等于0,如下所示:

int main()
{
long number=0,m=0;
printf("Give a number :");
scanf("%ld",&number);
long s=0,temp=number;
while(number != 0)
{
m=number%10;
s+=m;
number/=10;
}
printf("n%The sum of the digits of the Number %ld is : %ldn",temp,s);
}

最新更新