[英]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.