본문 바로가기
프로그램/C언어 1000제

C언어 101제] C언어 콘서트 CHAPTER 11 Programming 1 구조체 안에 공용체 사용한 구조체 선언하기 p455

by 건티 2022. 1. 14.
728x90

출처 : 반크_가상독도전시관

 

참고풀이]

//Dev-C++ 5.11로 작업함.
#include <stdio.h>
#include <string.h> //strlen(), strcpy()

union Number{
   char rrn[14];//주민등록번호 
   char colleague[9];//학번(년도+학년+반+번호) 
};


struct Student {
   union Number no;
   char name[20];//이름 
   char telephone[12];//전화번호 
};

int main()
{
   struct Student ban;
   char strno[14]={'\0'};//주민번호 또는 학번 입력변수
   int i;//반복변수 

   //자료를 입력합니다. 
   while(1)
   {
      printf("주민등록번호 또는 학번을 입력하시오(예:22010101) : ");
      scanf("%s%*c",strno); //%*c:Enter Key
      if(strlen(strno)==8 || strlen(strno)==13) break;
      printf("주민등록번호는 13자리이고, 학번은 8자리 수를 입력하세요.\n");
      printf("다시 입력하세요...\n");
   }

   if(strlen(strno)==8) strcpy(ban.no.colleague,strno);
   else strcpy(ban.no.rrn,strno);

   printf("이름을 입력하시오(예:박건태) : ");
   gets(ban.name);
   printf("전화번호를 입력하시오(예:01012341234) : ");
   scanf("%s%*c",ban.telephone);

   //결과를 출력합니다.
   printf("\n 이름\t 주민번호/학번     전화번호\n");
   printf("====================================\n");
   printf("%6s\t",ban.name);

 

   if(strlen(strno)==8) printf("%13s",ban.no.colleague);
   else
      for(i=0;i<strlen(ban.no.rrn);i++)
         if(i==6) printf("-%c",ban.no.rrn[i]);
         else printf("%c",ban.no.rrn[i]);

 

   printf("   ");
   for(i=0;i<strlen(ban.telephone);i++)
      if(ban.telephone[i]==3 || ban.telephone[i]==7) printf("-%c",ban.telephone[i]);
      else printf("%c",ban.telephone[i]);
   printf("\n");

   return 0;
}

 

참고풀이 결과]

 

 

 

대한민국의 아름다운 영토, 독도의 겨울

 

반응형

댓글