我的初学者 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 %d\n", pers, sum);
}
return 0;
}
每当我(成功)编译并运行代码时,在 scanf 语句之后,程序什么也不做。为什么会这样?对于成功完成这项任务有什么建议吗?非常感谢你的帮助