簡體   English   中英

加法持久性和加法根程序在輸入數字后無響應

[英]Additive Persistence and Additive Root Program Not Responding After Inputting Number

我的初學者 C 編程 class 有一個家庭作業:

加法持久性是 integer 的數字總和的屬性。 找到數字之和,然后對和進行數字之和,重復直到達到單個 integer 數字。 這種循環的數量是該整數的加法持久性。 考慮以下示例:

● integer開頭為1234

● 其位數為 1+2+3+4 = 10

● integer 現在是 10

● 其數字之和為 1 + 0 = 1

● integer 為1。當值達到個位數時,我們就完成了。 這個最終的 integer 是加法根

循環次數是附加持久性。 integer 1234 的附加持久性為 2(第一個和為 10,然后第二個和為 1)。 達到的最后一位稱為整數的加法數字根。 1234 的加法數字根是 1。編寫一個程序:

● 向用戶詢問正面的 integer。

● 如果給定的integer 是一位數,則將其加法持久性和乘法持久性報告為0,並將其加法根報告為自身。

● 如果 integer 小於 0,則為退出程序的信號。

● 否則,求給定 integer 的加性持久性和加性根,並將結果報告給用戶

● 繼續提示用戶直到他們退出

這是我想出的代碼:



#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 語句之后,程序什么也不做。 為什么會這樣? 對於成功完成這項任務有什么建議嗎? 非常感謝你的幫助

考慮這一行:

res = num / 10;

第一次運行循環后res的值是多少? 在第二次運行之后? 如果你在那里打印來調試你的程序,你會看到res總是具有相同的值並且不會改變。 這是一個無限循環,並且可能會 go 打開,直到sum溢出時出現未定義的行為。 你可能想要這個:

res = res / 10;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM