我有这些变量:
int dividend;
int divider;
我有这个功能:
Divisibility7 (int num);
这两个变量将在main函数中,并且将要求用户输入被除数和除法器,但是如果用户输入除法器7
,则将调用上面的函数。
问题是我必须遵循特定的标准才能做到这一点。因此,我们假设用户将使用红利7203
输入。发生这种情况:
予。 获取数字的最后一位数。
最后一位数:3
二。 将最后一位数乘以2
3 x 2 = 6
三。 获取初始数字的值,没有最后一位数。
720
四。 从乘法结果中减去没有最后一位的初始值。
fabs(720 - 6)= 714
诉重复此过程,直到结果值小于或等于70
六。 将结果与目录进行比较(0,7,14,21,28,35,42,49,54,63,70) 确定该数字是否可以被7整除
代码:
int res;
int x;
int y;
int Divisibility7(int num) {
int res;
int x;
int y;
int z;
while(num > 70) {
x = num % 10; // get the last digit from the number
y = x * 2; // multiply the last digit by 2;
z = num/10; // get the first digits from the number
fabs(z - y); // subtract the first digits with the last digits;
}
}
在一段时间内,最后的晶圆厂(zy)返回我想要的东西,成为减去最后一个数字的第一个数字,但问题是,在那里停止,我必须做一些事情来做到这一点到70岁或以下。
PS:我需要检查迭代中的最终数字,它是一个乘以7的数字,我该怎么做?而我无法使用mod。
答案 0 :(得分:3)
你没有在while循环中更改num。你也不会返回值。希望以下代码适合您。
int Divisibility7(int num) {
int res,x,y,z;
while(num > 70) {
x = num % 10; // get the last digit from the number
y = x * 2; // multiply the last digit by 2;
z = num/10; // get the first digits from the number
num = abs(z - y); // subtract the first digits with the last digits;
}
if(num == 0 || num == 7 || num == 14 || num == 21 || num == 28 || num == 35 || num == 42 || num == 49 || num == 54 || num == 63 || num == 70) {
return 1;
}
else {
return 0;
}
}
答案 1 :(得分:2)
不确定,但我认为这就是你要做的事情:
int main (void)
{
int number, lastDigitMultiplied;
scanf("%d", &number);
while(number > 70){
//get the last digit and multiply it by 2
lastDigitMultiplied = (number % 10) * 2;
//subtract the initial value without the last digit from the multiplication result.
number = number / 10 - lastDigitMultiplied;
}
if(abs(number) % 7 == 0)
printf("The result is %d and it is a multiple of 7", number);
else
printf("The result is %d and it is not a multiple of 7", number);
return 0;
}