This program prints all Armstrong numbers between 1 and 100 in the C programming language.
Problem Statement
Given a range of natural numbers from 1 to 100, write a C program to find and print all Armstrong numbers in this range.
Solution
To solve this problem, we will write a function called isArmstrong() that takes an integer argument num and returns a boolean value indicating whether or not num is an Armstrong number. We will then use a loop to iterate over all numbers from 1 to 100 and print those that are Armstrong numbers. Here’s the code:
#include <stdio.h>
#include <stdbool.h>
bool isArmstrong(int num);
int main() {
int i;
printf("Armstrong numbers between 1 and 100 are:\n");
for (i = 1; i <= 100; i++) {
if (isArmstrong(i)) {
printf("%d\n", i);
}
}
return 0;
}
bool isArmstrong(int num) {
int temp, digit, sum = 0;
temp = num;
while (temp != 0) {
digit = temp % 10;
sum += digit * digit * digit;
temp /= 10;
}
return num == sum;
}
Output

Let’s go through the code step-by-step:
- We include the standard input/output header file
stdio.hand the boolean header filestdbool.h. - We declare a function called
isArmstrong()that takes an integer argumentnumand returns a boolean value. This function will be used to check if a number is an Armstrong number or not. - In the
main()function, we declare an integer variableiand use a loop to iterate over all numbers from 1 to 100. For each number, we call theisArmstrong()function to check if it is an Armstrong number. If it is, we print it using theprintf()function. - The
isArmstrong()function is defined below themain()function. It takes a single integer argumentnum, which is the number to be checked for Armstrong property. - Inside the
isArmstrong()function, we declare three integer variablestemp,digit, andsum. We initializetemptonum, which will be used to extract each digit ofnum. We initializesumto 0, which will be used to store the sum of cubes of digits ofnum. - We then use a while loop to extract each digit of
numand add its cube tosum. We dividetempby 10 to remove the last digit ofnum. This process continues untiltempbecomes 0. - Finally, we check if
numis equal tosum. If it is, we returntrue(indicating thatnumis an Armstrong number), otherwise we returnfalse.
Explanation
An Armstrong number is a number that is equal to the sum of cubes of its digits. For example, 153 is an Armstrong number because 1^3 + 5^3 + 3^3 = 153. To check if a number is an Armstrong number, we need to extract each digit of the number, cube it, and add the cubes. If the result is equal to the original number, then the number is an Armstrong number.
The isArmstrong() function takes an integer argument num and extracts each digit of num using a while loop. Inside the loop, we extract the last digit of num using the modulus operator % and store it in the variable digit. We then cube digit and add it to sum. We remove the last digit of num by dividing temp by 10, and the loop continues until temp becomes 0. Once the loop is finished, we check if num is equal to sum. If it is, we return true, indicating that num is an Armstrong number. If it isn’t, we return false.
In the main() function, we use a loop to iterate over all numbers from 1 to 100. For each number, we call the isArmstrong() function to check if it is an Armstrong number. If it is, we print it using the printf() function.
Conclusion
In this program, we used a loop and a function to find all Armstrong numbers between 1 and 100 in the C programming language. Armstrong numbers are numbers that are equal to the sum of cubes of their digits. By extracting each digit of a number, cubing it, and adding the cubes, we can check if a number is an Armstrong number. The isArmstrong() function uses this process to check if a number is an Armstrong number, and the main() function uses a loop to find and print all Armstrong numbers between 1 and 100.