#마방진

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
#include<stdio.h>
#include<string.h>
void magicSquareTest(void);
void setMagicSquare(int (*magic)[19]);
void printArray19(int (*magic)[19]);
int num;
int magic[19][19];
 
int main() {
    magicSquareTest();
    setMagicSquare(magic);
    printArray19(magic);
    
    system("pause");
    return 0;
}
void magicSquareTest(void) {
    printf("inpur number : ");
    scanf("%d",&num);
}
void setMagicSquare(int (*magic)[19]) {
    int count=1,k;
    int i=0,j=num/2;
    
    for (k=0;k<num*num;k++)
    {
        if(count%num==0)
            magic[i++][j]=count;
        else
            magic[i--][j++]=count;
            
        if(i<0)
            i=num+i;
        if(j>num-1)
            j=num-j;
            
        count++;
    }
}
void printArray19(int (*magic)[19]) {
    int i,j;
    for (i=0;i<num;i++
    {
        for (j=0;j<num;j++)
            printf("%5d",magic[i][j]);
        printf("\n");
    }
}
cs



#주민등록번호

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
#include<stdio.h>
#include<string.h>
int leap_year(int year);
int strtoNum(char* str);
int formatErrorCheck(char* str);
int dayofmonth[]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int main()
{
    char str[14];
    char flag;
    
    while(1)
    {
        
    printf("\"_\"를 제외한 확인할 주민등록 번호 13자리를 입력하세요 : ");
    gets(str);
        fflush(stdin);
    if(!formatErrorCheck(str))
    {
    printf("검증코드 오류인 주민등록 번호 입니다.\n");
    printf("다시 입력하시겠습니까? (y/n) ");
    scanf("%c"&flag);
     fflush(stdin);
    if (flag == 'Y' || flag == 'y')
    continue;
    else
    break;
    }
 
    else
    {
        printf("올바른 주민등록 번호 입니다.\n");
           printf("다시 입력하시겠습니까? (y/n) ");
    scanf("%c"&flag);
     fflush(stdin);
    if (flag == 'Y' || flag == 'y')
    continue;
    else
    break;
    }
}
    system("pause");
    return 0
}
 
int strtoNum(char* str)
{
    return atoi(str);
}
int leap_year(int year)
{
    if(year >50)
    year =year + 1900;
    else
    year =year + 2000;
    
    if(year%4!=0return 0;
    else if(year%100!=0return 1;
    else if(year%400==0return 1;
    else return 0;
}
 
int formatErrorCheck(char* str)
{
    if(strlen(str) !=13)
    return 0;
    
    char month[10]={0};
    strncpy(month,str+2,2);
    if(strtoNum(month)>12)
    return 0
 
    char day[10]={0};
    char year[10]={0};
    strncpy(year,str,2);
    strncpy(day,str+4,2);
    
    if(leap_year(strtoNum(year)))
    {
        dayofmonth[2]=28;    
    }
    if(strtoNum(day)>dayofmonth[strtoNum(month)])
    return 0;
 
    int magic[12= {2,3,4,5,6,7,8,9,2,3,4,5};
    int i , sum=0;
    int carry;
    for(i=0;i<12;i++)
    {
        sum +=magic[i]*(str[i]-48);
    }
    carry = sum%11;
    if(((11-carry)%10!=(str[12]-48))
    return 0;
    else
    return 1;    
}
cs


'C 언어' 카테고리의 다른 글

[C언어_Day9]파일 입출력  (0) 2018.10.11
[C언어_Day7]동적 할당  (0) 2018.10.11
[C언어_Day6]함수 포인터 + Void 포인터  (0) 2018.10.11
[C언어_Day5]명령 인수, 포인터 사용  (0) 2018.10.11
[C언어_Day4]String 예제  (0) 2018.10.11

+ Recent posts