본문 바로가기

공부/C언어

C언어 - swap(스왑)함수 와 달력

제목이 저런건..

레포트 제목이 저렇더라구요??ㅋㅋ

그래서 내부를 잘 봤는데..?

그냥 swap함수 사용하는 방법이더라구요 ㅋㅋ

 

swap이 뭔지는 아시죠??

그냥 두개를 바꾸는거에요 ㅋㅋ

1 이랑 2 를 입력하면

2 , 1로 출력을 하는거죠 ㅎ

 

 

그리고 달력은...

그냥 이거 전 포스팅에 있던 달력을 갔다 쓴듯..?

 

우선 알고리즘부터 볼까나요~?

 

 

사용자에게서 swap을 할껀지 그냥 달력을 출력할건지를 물어서 답을 받구요

swap을 사용하자 하고 싶다면

사용자에게 바꿀 두 수를 입력 받은 다음에 입력받은 두 수를 그냥 교체해서 출력해 주면 되는 단순한 거에요

달력은 말 그대로 달력이구요 ㅋㅋ

 

 

소스 투척!

 

 

calendar.c

#include <stdio.h>

#include "calendar.h"

void calendar()

{

int year,month;

while(1)

{

printf ("알고싶은 연도를 입력하세요.\n");//연도 입력받기

scanf("%d",&year);

printf ("알고싶은 달을 입력하세요.\n");//월수 입력받기

scanf("%d",&month);

printcalendar(year, month);

}

}

void printcalendar(int year, int month)

{

int week; //변수 선언

int day;

int yoon;

int a,b,c=0;

if(year%4==0&&year%100!=0||year%400==0)//윤년인지 확인함

{

yoon = 1;//윤년이다

}

else

{

yoon = 0;//윤년이 아니다

}

if(month > 12 || month == 0) //달이 12이상 또는 0일 경우

{

printf("잘못된 달을 입력하셨습니다.\n\n");//잘못된 월을 입력했을때

}

day = 0;

for(a=1;a<=month;a++) // 달의 전달의 날짜를 더해줌

{

if(a==2||a==4||a==6||a==8||a==9||a==11)//2 또는 4 또는 6 또는 8 또는 9 또는11 일 경우

{

day+=31;//31을 더해줌

}

if(a==5||a==7||a==10||a==12)//5또는7또는10또는12 일 경우

{

day+=30;//30을 더해줌

}

if(a==3)

{

if(yoon == 1)

{

day+=29;

}

else

{

day+=28;

}

}// 윤달에는 29을 아니면 28일을 더해줌

}

week = (year*365 + year/4 - year/100 + year/400 -1 + day)%7; // 전체 날짜를 더하여 요일을 계산

................

 

이번엔 소스를 헤더랑 메인이랑 C로 나눠서 했더라구요 ㅋㅋ

헤더는 올리지 않을게요 ㅎㅎ

위에껀 앞에서 보신 포스팅과 거의 비슷한 (아님 똑같은?) 달력 프로그램이엇어요 ㅋㅋ

 

 

main.c

#include <stdio.h>

#include "swap.h"

#include "calendar.h"

void main(void)

{

int input = 0; // 함수 선택 변수

while(input != 1 && input !=2)

{

printf("실행할 함수를 입력하시오\n 1.swap 2.달력\n");

scanf("%d",&input);

if(input !=1 && input !=2)

{

printf("잘못된 입력입니다.\n");

}

}

if(input==1) // SWAP 실행

{

swap();

}

else if(input==2) // 달력 출력 실행

{

calendar();

}

이게 바로 별거 없는 메인이에요 ㅋㅋ

헤더를 따로 만들 땐 저렇게 main함수를 만들어서 따로 관리를 하더라구요 ㅎ

보통 C++이상의 언어에서 많이 사용하는 방법인듯..?

아님 말구요 ..ㅋㅋㅋ

 

 

 

swap.c

#include <stdio.h>

#include "swap.h"

void swap()

{

int num1,num2;

int temp; //swap을 위한 임시 변수

//SWAP 할 두수 입력

printf("처음 수 입력하시오\n");

scanf("%d",&num1);

printf("두번째 수 입력하시오\n");

scanf("%d",&num2);

// SWAP 되기 전의 상태 출력

printf("swap num1 = %d, num2 = %d \n\n", num1, num2);

// SWAP 과정

temp = num1;

num1 = num2;

num2 = temp;

//SWAP 된 후의 상태 출력

printf("swap num1 = %d, num2 = %d \n\n", num1, num2);

}

 

이게 스왑함수입니다 ..ㅎ

별거 없죠???

그냥 정말 바꾸면 끝인..

원래 저런걸 더 복잡하게 해서 응용하고 해야 하는데..

저 땐..

이제 막 시작 단계라 그런지..

그냥 바꾸기만 해서 나오면 맞는 거였나봐요 ㅋㅋㅋㅋ

 

잘 돌아가나 결과화면을 볼까나요 ?

 

 

 

스왑을 실행시켰을 때 나오는 결과화면이에요 ㅋㅋ

정상적으로 잘 바꿔서 나오네요 ㅋㅋ


 

이건 달력!!

전 포스팅이랑 별다를거 없죠??ㅋㅋㅋㅋㅋ

이번건 별로 그닥 그렇네요 ㅋㅋㅋ