소개
이 실험에서는 C 프로그램을 사용하여 주어진 숫자가 암스트롱 수인지 확인하는 방법을 배웁니다. 먼저 사용자로부터 정수 입력을 받은 다음, 각 자릿수를 전체 자릿수의 거듭제곱으로 계산하고, 마지막으로 숫자가 암스트롱 수인지 아닌지를 출력합니다.
프로그램은 입력을 받는 단계부터 숫자가 암스트롱 수인지 판별하는 단계까지 사용자를 단계별로 안내합니다.
이 실험에서는 C 프로그램을 사용하여 주어진 숫자가 암스트롱 수인지 확인하는 방법을 배웁니다. 먼저 사용자로부터 정수 입력을 받은 다음, 각 자릿수를 전체 자릿수의 거듭제곱으로 계산하고, 마지막으로 숫자가 암스트롱 수인지 아닌지를 출력합니다.
프로그램은 입력을 받는 단계부터 숫자가 암스트롱 수인지 판별하는 단계까지 사용자를 단계별로 안내합니다.
이 단계에서는 C 프로그램에서 사용자로부터 정수 입력을 받아 암스트롱 수인지 확인하는 방법을 배웁니다.
먼저 프로젝트 디렉토리에 새로운 C 파일을 생성합니다.
cd ~/project
nano armstrong.c
이제 정수를 읽는 초기 코드를 작성합니다.
#include <stdio.h>
int main() {
int number;
// 사용자에게 암스트롱 수인지 확인할 숫자를 입력하도록 프롬프트합니다.
printf("암스트롱 수인지 확인할 숫자를 입력하세요: ");
// 정수 입력을 읽습니다.
scanf("%d", &number);
// 입력된 숫자를 출력하여 입력을 확인합니다.
printf("입력한 숫자: %d\n", number);
return 0;
}
프로그램을 컴파일하고 실행합니다.
gcc armstrong.c -o armstrong
./armstrong
예시 출력:
암스트롱 수인지 확인할 숫자를 입력하세요: 153
입력한 숫자: 153
코드를 분석해 보겠습니다.
scanf("%d", &number)는 사용자 입력에서 정수를 읽습니다.&number는 number 변수의 메모리 주소를 전달합니다.printf()는 사용자에게 프롬프트하고 입력된 숫자를 표시하는 데 사용됩니다.이 단계에서는 이전 프로그램을 수정하여 각 자릿수를 전체 자릿수의 거듭제곱으로 한 합을 계산합니다.
armstrong.c 파일을 엽니다.
cd ~/project
nano armstrong.c
자릿수 합을 계산하도록 코드를 업데이트합니다.
#include <stdio.h>
#include <math.h>
int main() {
int number, originalNumber, remainder, digitCount = 0;
long long digitSum = 0;
// 사용자에게 암스트롱 수인지 확인할 숫자를 입력하도록 프롬프트합니다.
printf("암스트롱 수인지 확인할 숫자를 입력하세요: ");
scanf("%d", &number);
// 나중에 비교하기 위해 원래 숫자를 저장합니다.
originalNumber = number;
// 자릿수를 셉니다.
while (number != 0) {
number /= 10;
digitCount++;
}
// number 를 원래 값으로 되돌립니다.
number = originalNumber;
// 각 자릿수를 자릿수 개수의 거듭제곱으로 한 합을 계산합니다.
while (number != 0) {
remainder = number % 10;
digitSum += pow(remainder, digitCount);
number /= 10;
}
// 결과를 출력합니다.
printf("자릿수 개수: %d\n", digitCount);
printf("자릿수를 거듭제곱한 합: %lld\n", digitSum);
return 0;
}
수학 라이브러리와 함께 프로그램을 컴파일합니다.
gcc armstrong.c -o armstrong -lm
./armstrong
예시 출력:
암스트롱 수인지 확인할 숫자를 입력하세요: 153
자릿수 개수: 3
자릿수를 거듭제곱한 합: 153
핵심 개념 설명:
digitCount는 자릿수를 추적합니다.pow(remainder, digitCount)는 각 자릿수를 전체 자릿수 개수의 거듭제곱으로 계산합니다.number % 10은 마지막 자릿수를 추출합니다.number /= 10은 각 반복에서 마지막 자릿수를 제거합니다.long long은 잠재적으로 큰 자릿수 합을 처리하는 데 사용됩니다.이 단계에서는 계산된 자릿수 합과 원래 숫자를 비교하여 암스트롱 수 검사기를 완성합니다.
armstrong.c 파일을 엽니다.
cd ~/project
nano armstrong.c
숫자가 암스트롱 수인지 판별하고 출력하도록 코드를 업데이트합니다.
#include <stdio.h>
#include <math.h>
int main() {
int number, originalNumber, remainder, digitCount = 0;
long long digitSum = 0;
// 사용자에게 암스트롱 수인지 확인할 숫자를 입력하도록 프롬프트합니다.
printf("암스트롱 수인지 확인할 숫자를 입력하세요: ");
scanf("%d", &number);
// 나중에 비교하기 위해 원래 숫자를 저장합니다.
originalNumber = number;
// 자릿수를 셉니다.
while (number != 0) {
number /= 10;
digitCount++;
}
// number 를 원래 값으로 되돌립니다.
number = originalNumber;
// 각 자릿수를 자릿수 개수의 거듭제곱으로 한 합을 계산합니다.
while (number != 0) {
remainder = number % 10;
digitSum += pow(remainder, digitCount);
number /= 10;
}
// 숫자가 암스트롱 수인지 확인합니다.
if (digitSum == originalNumber) {
printf("%d는 암스트롱 수입니다.\n", originalNumber);
} else {
printf("%d는 암스트롱 수가 아닙니다.\n", originalNumber);
}
return 0;
}
프로그램을 컴파일합니다.
gcc armstrong.c -o armstrong -lm
./armstrong
예시 출력:
암스트롱 수인지 확인할 숫자를 입력하세요: 153
153는 암스트롱 수입니다.
암스트롱 수인지 확인할 숫자를 입력하세요: 154
154는 암스트롱 수가 아닙니다.
핵심 개념 설명:
digitSum과 originalNumber를 비교합니다.이 실험에서는 사용자로부터 정수 입력을 받고, 각 자릿수를 전체 자릿수의 거듭제곱으로 한 합을 계산하며, 숫자가 암스트롱 수인지 판별하는 방법을 배웁니다. 첫 번째 단계는 사용자에게 숫자를 입력하도록 요청하고 변수에 저장하는 것입니다. 두 번째 단계는 각 자릿수를 전체 자릿수의 거듭제곱으로 한 합을 계산하는 데 중점을 두며, 이 값을 원래 숫자와 비교하여 암스트롱 수인지 확인합니다.