c-加性持久性和加性根程序在输入数字后没有响应



我有一个C编程初学者的家庭作业:

加法持久性是一个整数的位数和的性质。找到数字的和,然后对和执行数字的求和,重复直到达到一个整数位数。这样的循环数就是整数的加性持久性。考虑以下示例:

●起始整数为1234

●其数字之和为1+2+3+4=10

●整数现在是10

●其数字之和为1+0=1

●整数为1。当数值达到个位数时,我们就完了。最后一个整数是加性根

循环次数是加性持久性。整数1234具有2的加性持久性(第一个和是10,然后第二个和是1(。达到的最后一个数字称为整数的加性数字根。1234的加法数字根是1。编写一个程序:

●请用户输入一个正整数。

●如果给定的整数是个位数,则将其加法持久性和乘法持久性报告为0,并将其加法根报告为自身。

●如果整数小于0,则表示退出程序。

●否则,找到给定整数的加性持久性和加性根,并将结果报告给用户

●通过提示用户继续,直到他们退出

这是我想出的代码:


#include <stdio.h>
int main()
{
int num;
int pers = 0;
int res = 0;
int sig = 0;
int sum = 0;
int sum1 = 0;
for (sig = 0;sig >= 0;) {
printf("Please enter a positive integer to find the additive persistence, and the integer's additive digital root: ");
scanf_s("%d", &num);
if (num < 0) {
sig--;
break;
}
res = num;
sum = 0;
while((res>0)){
sum = sum + (res % 10);
res = num / 10;
if (res == 0) {
if (sum >= 10) {
res = sum;
sum = 0;
}
if (sum < 10)
pers++;

}
}

printf("nThe additive persistence is %d and the additive root is %dn", pers, sum);


}
return 0;
}

每当我(成功地(编译并运行代码时,在scanf语句之后,程序什么都不做。为什么会发生这种情况?对于成功完成这项任务,有什么建议吗?非常感谢您的帮助

考虑这一行:

res = num / 10;

第一次运行循环后,res的值是多少?第二次跑步后呢?如果你在那里放一个打印来调试你的程序,你会看到res总是有相同的值,并且不会改变。这是一个无限循环,可能会一直持续到sum溢出时出现未定义的行为。你可能想要这个:

res = res / 10;

最新更新