在此示例中,您將學(xué)習(xí)檢查用戶輸入的整數(shù)是否是Armstrong數(shù)字。
要理解此示例,您應(yīng)該了解以下C語言編程主題:
如果滿足以下條件,則一個(gè)正整數(shù)稱為阿姆斯特朗數(shù)(n階),如果
abcd... = an + bn + cn + dn +
對于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ù)存儲在n中 for (originalNum = num; originalNum != 0; ++n) { originalNum /= 10; } for (originalNum = num; originalNum != 0; originalNum /= 10) { remainder = originalNum % 10; // 存儲結(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ù),并將其存儲在n中。 并且,pow()函數(shù)用于計(jì)算第二個(gè)for循環(huán)的每次迭代中各個(gè)數(shù)字的冪。