728x90
#include <stdio.h>
int main() {
char juminNumber[13];
int check[] = {2,3,4,5,6,7,8,9,2,3,4,5};
int i, sum=0, lastNum, result;
printf("주민등록번호를 입력하세요. (하이픈 '-'은 제외) : \n");
scanf("%s", juminNumber);
for (i=0; i<13; i++) {
if (juminNumber[i] < '0' || juminNumber[i] > '9')
printf("잘못 입력하셨습니다. 숫자만 입력해주세요. \n\n");
break;
}
for (i=0; i<12; i++) {
sum += (juminNumber[i]-'0') * check[i];
}
lastNum = juminNumber[12]-'0';
result = 11 - (sum%11);
result == 10 ? result -= 10 : result; // 나의 경우 마지막이 10이라 0으로 줄여준다.
for (i=0; i<13; i++) {
printf("%c", juminNumber[i]);
if (i==5)
printf("-");
}
if (result == lastNum)
printf("는(은) 유효한 주민등록번호입니다.\n");
else
printf("는(은) 유효하지 않은 주민번호입니다.\n");
return 0;
}
주민번호는 유효성 검사가 가능하다
주민번호 맨 뒷자리만 빼 놓은 12자리 숫자를, 각각 234567 892345 에 자리수에 맞게 하나씩 곱하고 그 결과를 더한다.
앞자리가 95라면 9*2 + 5*3을 하는 것.
그렇게 모두 더한 수를 11로 나눈 나머지를, 11에서 뺀 값이 주민번호 마지막 숫자와 같아야 유효한 주민번호이다.
만약 계산 결과가 10이 나온다면 0으로 바꾼다.
'Study > C' 카테고리의 다른 글
[C] String Capitalize - 문자열 각각의 첫 문자를 대문자로 출력하기. hong gil dong → Hong Gil Dong (0) | 2020.09.09 |
---|---|
[C] Bubble Sort 거품 정렬 (0) | 2020.09.08 |
최근댓글