在此示例中,您將學(xué)習(xí)檢查用戶輸入的整數(shù)是否是Armstrong數(shù)字。
要理解此示例,您應(yīng)該了解以下C語(yǔ)言編程主題:
如果滿足以下條件,則一個(gè)正整數(shù)稱為阿姆斯特朗數(shù)(n階),如果
abcd... = an + bn + cn + dn +
對(duì)于3位的阿姆斯特朗數(shù),每個(gè)數(shù)字的立方數(shù)之和等于數(shù)字本身。 例如,153是Armstrong的數(shù)字,因?yàn)?/p>
153 = 1*1*1 + 5*5*5 + 3*3*3
#include <stdio.h>
int main() {
int num, originalNum, remainder, result = 0;
printf("輸入一個(gè)三位數(shù)的整數(shù): ");
scanf("%d", &num);
originalNum = num;
while (originalNum != 0) {
// 余數(shù)
remainder = originalNum % 10;
result += remainder * remainder * remainder;
//從原始數(shù)字中去除最后一位數(shù)
originalNum /= 10;
}
if (result == num)
printf("%d 是一個(gè)阿姆斯特朗數(shù)。", num);
else
printf("%d 不是一個(gè)阿姆斯特朗數(shù)。", num);
return 0;
}輸出結(jié)果
輸入一個(gè)三位數(shù)的整數(shù): 371 371 是一個(gè)阿姆斯特朗數(shù)。
#include <math.h>
#include <stdio.h>
int main() {
int num, originalNum, remainder, n = 0;
float result = 0.0;
printf("輸入一個(gè)整數(shù): ");
scanf("%d", &num);
originalNum = num;
//將num的位數(shù)存儲(chǔ)在n中
for (originalNum = num; originalNum != 0; ++n) {
originalNum /= 10;
}
for (originalNum = num; originalNum != 0; originalNum /= 10) {
remainder = originalNum % 10;
// 存儲(chǔ)結(jié)果中每個(gè)數(shù)字的冪的和
result += pow(remainder, n);
}
// 如果num等于result,則該數(shù)字為阿姆斯壯數(shù)字
if ((int)result == num)
printf("%d 是一個(gè)阿姆斯特朗數(shù)。", num);
else
printf("%d 不是一個(gè)阿姆斯特朗數(shù)。", num);
return 0;
}輸出結(jié)果
輸入一個(gè)整數(shù): 1634 1634 是一個(gè)阿姆斯特朗數(shù)。
在此程序中,首先計(jì)算一個(gè)整數(shù)的位數(shù),并將其存儲(chǔ)在n中。 并且,pow()函數(shù)用于計(jì)算第二個(gè)for循環(huán)的每次迭代中各個(gè)數(shù)字的冪。