본문 바로가기
프로그래밍/C 언어(코딩)

C언어] 주민번호 생성하기

by 곰나나 2023. 12. 21.

[주민번호 생성하기]

툴 버전 : Visual Studio 2022

 

 

주민번호 생성 프로그램 출생년도, 월, 일, 남or여 를 입력 하고 나머지 8~13번까지는 랜덤하게 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
//& 성별을 확인하는 함수
int isValidGender(char Gender);
//& 해당 월에 해당하는 일수를 반환하는 함수
int daysInMonth(int month);
//& 무작위 성별을 반환하는 함수
char getRandomGender();
 
int main() 
{
    //& 변수 생성
    int BirthYear=0;
    int BirthMonth=0;
    int BirthDay=0;
    char Gender;
 
    int SeventhDigit = 0;
    int RandomDigits = 0;
 
    int exitChoice=0;
 
    do{
        //& 입력하기
        printf("출생 연도를 입력하세요: ");
        if (scanf_s("%d"&BirthYear) != 1
        {
            printf("잘못된 입력입니다. 프로그램을 종료합니다.\n");
            return 1;
        }//if
        do 
        {
            printf("출생 월을 입력하세요: ");
            if (scanf_s("%d"&BirthMonth) != 1 || BirthMonth < 1 || BirthMonth > 12
            {
                printf("잘못된 입력입니다. 다시 입력하세요.\n");
                while (getchar() != '\n');  // 입력 버퍼를 비움
            }//if
            else 
            {
                break;
            }//else
        } //fo
        while (1);
 
        do 
        {
            printf("출생 일을 입력하세요: ");
            if (scanf_s("%d"&BirthDay) != 1 || BirthDay < 1 || BirthDay > daysInMonth(BirthMonth)) 
            {
                printf("잘못된 입력입니다. 다시 입력하세요.\n");
                while (getchar() != '\n');  // 입력 버퍼를 비움
            }//if
            else 
            {
                break;
            }//else
        }//do
        while (1);
    
        //& 성별 입력 받기
        printf("성별을 입력하세요 (M,n 또는 F,f): ");
        if (scanf_s(" %c"&Gender, 1!= 1 || !isValidGender(Gender)) 
        {
            printf("잘못된 성별 입력입니다. 무작위 성별로 설정합니다.\n");
            Gender = getRandomGender();
            printf("설정된 성별: %c\n", Gender);
        }//if
    
        //& 7번째 자리에 성별에 따라 값 설정
        SeventhDigit = (Gender == 'M') ? 1 : 2;
    
        //& 8~13번째 자리에 랜덤 숫자 설정
        srand(time(NULL)); 
 
        RandomDigits = (rand() % 1000000);
    
        //& 주민등록번호 출력
        printf("생성된 주민등록번호: %02d%02d%02d-%d%06d\n", BirthYear, BirthMonth, BirthDay, SeventhDigit, RandomDigits);
        
        //& 다시 입력할지 종료할지 선택
        printf("프로그램을 종료하려면 0, 다시 입력하려면 1을 입력하세요: ");
        scanf_s("%d"&exitChoice);
 
    } //do
    while (exitChoice != 0);
 
    return 0;
}// main
 
 
//& 성별을 확인하는 함수
int isValidGender(char Gender)
{
    return (Gender == 'M''n' || Gender == 'F''f');
}// isValidGender
 
//& 해당 월에 해당하는 일수를 반환하는 함수
int daysInMonth(int month)
{
    switch (month)
    {
    case 4:
    case 6:
    case 9:
    case 11:
        return 30;
    case 2:
        return 28;  // 간단히 하기 위해 윤년은 고려하지 않음
    default:
        return 31;
    }//switch
}//daysInMonth
 
//& 무작위 성별을 반환하는 함수
char getRandomGender()
{
    return (rand() % 2 == 0) ? 'M''n' : 'F''f';
}//getRandomGender
cs

728x90

'프로그래밍 > C 언어(코딩)' 카테고리의 다른 글

C언어] 지수 함수  (0) 2023.12.22
C언어] 수학 함수  (1) 2023.12.22
C언어] 로또 게임  (1) 2023.12.21
C언어] 숫자 슬롯 머신 게임 (배열)  (1) 2023.12.19
C언어] 숫자 베이스볼 게임 (함수화)  (0) 2023.12.18