我想寫一個C程序,計算提高到他們的位置的權力的數字的總和位數。C提高到他們的位置的權力的數字的總和
例如: 用戶輸入5672
, 輸出應爲5^1 + 6^2 + 7^3 + 2^4
。 數字5
中的第一個數字上升到功率1
,因爲它是第一個數字。在每種情況下都是一樣的邏輯。
我想出了代碼來計算一個數字的總和,但是,我有麻煩生成代碼關於如何將這些數字提高到一定的權力。
#include <stdio.h>
#include <math.h>
int main() {
long num, digit, sum = 0;
int countDigits = 0;
long temp = num;
int i;
printf("Enter the number \n");
scanf("%ld", &num);
temp = num;
while (num > 0) {
digit = num % 10;
sum = sum + digit;
num /= 10;
}
printf("Given number = %ld\n", temp);
printf("Sum of the digits %ld = %ld\n", temp, sum);
while (temp > 0) {
countDigits += 1;
temp /= 10;
}
i = 0;
sum = 0;
while (num > 0) {
digit = num % 10;
sum = sum + pow(digit, countDigits);
countDigits -= 1;
num /= 10;
}
printf("The final sum is %d\n", sum);
}
循環之前添加一個'position'變量,它初始化爲1,在循環和變化'總和=總和+手指的端部增加它;''到總和+ = POW(數字,POS) ;' – George
[Do this](http://stackoverflow.com/questions/42821270/c-program-that-calculates-sum-of-digits-of-a-number-raised-to-the-power-of-他們的#comment72754348_42821270)或者使用for循環,並且在那裏你將爲(int pos = 1; num> 0; ++ pos)提供「* position *」'pos'變量''。 –
@George這是一個好主意,但不幸的是,上面的代碼是從右到左的數字,她想從左到右讀數字。閱讀一個字符串可能會更好,並且這樣做。逐字串直到它不是一個數字,解碼字符的實際數字(char - '0')。那麼你的位置邏輯將會很酷......(但是當然她必須考慮到pos的範圍從1到n,但是在解引用字符串以確保使用「pos-1」時 – Code4aliving