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으로 바꾼다.

 

  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기