输入数字后,附加的持久性和附加的根程序无响应

我有一个初学者的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语句之后,程序将不执行任何操作。为什么会这样呢?对于成功完成此作业有什么建议吗? 非常感谢您的帮助

f2003365964y 回答:输入数字后,附加的持久性和附加的根程序无响应

考虑这一行:

res = num / 10;

第一次运行循环后,res的值是多少?然后第二次运行?如果您在此处放置打印内容以调试程序,则会看到res始终具有相同的值,并且不会改变。这是一个无限循环,可能会持续进行,直到sum溢出时您的行为不确定为止。您可能想要这样:

res = res / 10;
本文链接:https://www.f2er.com/3151560.html

大家都在问