년, 월을 입력하면 해당 달의 달력을 출력하는 프로그램이다.

#include <stdio.h>

 

int day_of_week(int ,int ); //함수 선언

void print_calendar(int ,int ,int);

void print_head(int ,int );

 

int main(void)

{         

           int year; //

           int month; //

           int day; //해당월 1일의 요일

          

           do {

                     printf("년도와 월을 입력하시오(2009 8과 같은 형식으로)\n>> ");

                     scanf("%d%d",&year,&month); //년월 입력

                     if(month>=1 && month<=12)

                                break;

                     else

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

           } while (1);

          

           day = day_of_week(year,month); //해당월 시작요일 구하기

          

           print_head(year,month); //달력 상단부 출력

          

           print_calendar(day,year,month); //달력 날짜 출력

          

           return 0;

}

/****************************/

int day_of_week(int year,int month) //총 일수를 구하는 함수(해당 월 1일이 무슨요일인지 알기위해)

{

           int temp = 0; //임시로 계산에 사용할 변수

           int i; //for 문에서 사용할 변수

          

           for(i=1;i<year;i++) { //년도별 일수

                     if((i%4 == 0) && (i%100 != 0) || (i%400 == 0)) {

                                temp += 366;

                     } else {

                                temp += 365;    

                     }

           }

          

           for(i=1;i<month;i++) { //매 달 일수

                     if ( i==2 ) { // 2월일경우 윤년 검사

                                if((year%4==0) && (year%100 != 0) || (year%400 == 0))

                                          temp += 29;

                                else

                                          temp += 28;

                     }

                     switch (i) {

                     case 1:

                     case 3:

                     case 5:

                     case 7:

                     case 8:

                     case 10:

                     case 12:

                                temp += 31; //한달이 31일인 경우

                                break;

                     case 4:

                     case 6:

                     case 9:

                     case 11:

                                temp += 30; //한달이 30일인 경우

                                break;

                     }

           }

          

           temp = temp + 1; //마지막으로 일수를 더해 총 일 수를 구한다

          

           return temp % 7; //1=,2=...6=,0=

}

/****************************/

void print_calendar(int sd, int year, int month) //달력을 출력하는 함수

{

           int i,j; //for

           int temp; //해달 월의 총 일수

          

           switch (month) { //한달의 일수를 구한다

           case 1:       case 3:       case 5:       case 7:       case 8:       case 10:       case 12:

                     temp = 31; //한달이 31일인 경우

                     break;

           case 4:       case 6:       case 9:       case 11:

                     temp = 30; //한달이 30일인 경우

                     break;

           case 2: //2월의 경우

                     if((year%4==0) && (year%100 != 0) || (year%400 == 0))

                                temp = 29;

                     else

                                temp = 28;

           }

          

           printf("\t      ");

           for(i=1;i<=sd;i++)

                     printf("        ");

           j = sd;

           for(i=1;i<=temp;i++) {

                     if(j == 7) { //요일별로 출력되도록 줄바꿈

                                printf("\n\t      ");

                                j = 0;

                     }

                     printf("%2d      ",i);

                     j++;

           }

           printf("\n\n");

}

/****************************/

void print_head(int year,int month) //달력의 상단부 양식을 출력하는 함수

{

           printf("\n\t\t\t\t[%d %02d]\n\n",year,month);

           printf("\t                                          \n");

}


bit연산 프로그램으로 and, or, xor, comp의 연산을 가능하게 작성하였다

#include <stdio.h>

 

int MENU(); //함수 선언

void AND();

void OR();

void XOR();

void Complement();

 

int main(void)

{         

           int ex; //종료를 위한 변수

          

           do {

                     ex = MENU();

           } while (ex != -1);

          

           return 0;

}

/****************************/

int MENU() //메뉴함수

{

           int me; //메뉴

 

           printf("\n*******************비트연산프로그램*******************\n");

           printf("1.AND\t2.OR\t3.XOR\n4.Complement(~)\t5.종료\n");

           printf("******************************************************\n");

           printf("\n메뉴선택 : ");

           scanf("%d",&me);

          

           switch(me) {

           case 1:

                     AND();

                     break;

           case 2:

                     OR();

                     break;

           case 3:

                     XOR();

                     break;

           case 4:

                     Complement();

                     break;

           case 5:

                     return -1;

                     break;

           default :

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

           }

          

           return 0;

}

/****************************/

void AND() { //AND함수

           int a,b,i,mask=1;

           int temp;

 

           printf("두 정수를 입력하시오 : ");

           scanf("%d %d",&a,&b);

 

           printf("   \t\t");

           for(i=31;i>=0;i--)

                     printf("%d",(a&mask<<i)?1:0);

           printf("\nAND\t\t");

           for(i=31;i>=0;i--)

                     printf("%d",(b&mask<<i)?1:0);

           temp = a & b;

           printf("\n--------------------------------------------------------------");

           printf("\n   \t\t");

           for(i=31;i>=0;i--)

                     printf("%d",(temp&mask<<i)?1:0);

           printf(" = %d\n",temp);

}

/****************************/

void OR() { //OR함수

           int a,b,i,mask=1;

           int temp;

 

           printf("두 정수를 입력하시오 : ");

           scanf("%d %d",&a,&b);

 

           printf("   \t\t");

           for(i=31;i>=0;i--)

                     printf("%d",(a&mask<<i)?1:0);

           printf("\nOR \t\t");

           for(i=31;i>=0;i--)

                     printf("%d",(b&mask<<i)?1:0);

           temp = a | b;

           printf("\n--------------------------------------------------------------");

           printf("\n   \t\t");

           for(i=31;i>=0;i--)

                     printf("%d",(temp&mask<<i)?1:0);

           printf(" = %d\n",temp);

}

/****************************/

void XOR() { //XOR함수

           int a,b,i,mask=1;

           int temp;

 

           printf("두 정수를 입력하시오 : ");

           scanf("%d %d",&a,&b);

 

           printf("   \t\t");

           for(i=31;i>=0;i--)

                     printf("%d",(a&mask<<i)?1:0);

           printf("\nXOR\t\t");

           for(i=31;i>=0;i--)

                     printf("%d",(b&mask<<i)?1:0);

           temp = a ^ b;

           printf("\n--------------------------------------------------------------");

           printf("\n   \t\t");

           for(i=31;i>=0;i--)

                     printf("%d",(temp&mask<<i)?1:0);

           printf(" = %d\n",temp);

}

/****************************/

void Complement() { //Complement함수

           int a,i,mask=1;

           int temp;

 

           printf("하나의 정수를 입력하시오 : ");

           scanf("%d",&a);

 

           printf("\nCOMPLEMENT\t");

           for(i=31;i>=0;i--)

                     printf("%d",(a&mask<<i)?1:0);

           temp = ~a;

           printf("\n--------------------------------------------------------------");

           printf("\n          \t");

           for(i=31;i>=0;i--)

                     printf("%d",(temp&mask<<i)?1:0);

           printf(" = %d\n",temp);

}

#include <stdio.h>

 

void trans(int ,int ); //함수 선언

 

int main(void)

{

           int a,b; //두 정수

          

           printf("정수 입력 : ");

           scanf("%d",&a);

           printf("진법입력(2,8,16) : ");

           scanf("%d",&b);

          

           trans(a,b);

          

           return 0;

}

 

void trans(int a,int b) //진법변환 함수

{         

           int i,j = 0;

           int mask = 1;

           int temp;

           if(b == 2) { //2진법일경우

                     for(i=31;i>=0;i--) {

                                temp = (a&mask<<i)?1:0;

                                if(j==0 && temp==0)

                                          continue;

                                else if(j==0 && temp==1) {

                                          printf("%d",temp);

                                          j = 1;

                                } else

                                          printf("%d",temp);

                     }

           }

          

           else if(b == 8) //8진법으로

                     printf("결과-> %o",a);

           else if(b == 16) //16진법으로

                     printf("결과-> %x",a);

           else

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

           printf("\n");

          

           return ;

}

#include <stdio.h>

 

int gdc(int ,int ); //최대공약수 함수 선언

int lcm(int ,int ); //최소공배수 함수 선언

 

int main(void)

{

           int a,b; //두 정수

          

           printf("두개의 정수를 입력이시오 : ");

           scanf("%d%d",&a,&b);

           printf("%d,%d의 최대공약수는 %d입니다.\n",a,b,gdc(a,b)); //함수사용하여 출력

           printf("%d,%d의 최소공배수는 %d입니다.\n\n",a,b,lcm(a,b)); //함수사용하여 출력

          

           return 0;

}

 

int gdc(int a,int b) //최대공약수를 반환하는 함수

{         

           int i,j;

           int temp; //공약수를 저장할 변수

          

           j = (a<b)?a:b; //둘중 작은수를 구함

          

           for(i=1;i<=j;i++) {

                     if(a%i==0 && b%i==0)

                                temp = i;

           }

          

           return temp;

}

 

int lcm(int a,int b) //최소공배수를 반환하는 함수

{

           int i,j;

           int temp; //공배수를 저장할 변수

          

           j = (a>b)?a:b; //둘중 큰수를 구함

          

           for(i=j;;i++) {

                     if(i%a==0 && i%b==0){

                                temp = i;

                                break;

                     }

           }

          

           return temp;

}


뭐 일반적으로 생각하는 가로로된 sin 그래프가 아닌
쉽게 세로로 출력한다. 각도롤 15도씩 증가하는것으로 하였으며
그래프는 '*'로 출력하였다,

#include <stdio.h>

#include <math.h> //sin함수 쓰기위해 사용

 

#define PI 3.141592

 

void sine(); //함수 선언

 

int main(void)

{

           sine();

 

           return 0;

}

 

void sine(void) //sin값과 그래프를 출력하는 함수

{

           double temp; //sine값을 받을 변수

           int i,j;

 

           for(i=0;i<=360;i+=15) {

                     temp = sin((i*(PI/180))); //sin에 라디안값 넣어줌

                     printf("sin(%3d) = %+.2lf",i,temp);

                     for(j=-10;j<temp*10;j++) //sin값 만큼 띄워줌

                                printf(" ");

                     printf("*\n"); //그래프 찍고 줄바꿈

           }

 

}

#include <stdio.h>

 

double c_interest(int a,int n,double r); //복리로 계산해주는 함수

double mypow(double m,int n); //제곱승을 구하는 함수

 

int main(void)

{

           int money, year; //원금과 년수

           double rate; //이율

 

           printf("이자를 계산할 다음 세 항목을 입력하시오\n");

           printf("1.원금 입력 : ");

           scanf("%d",&money); //원금 입력

           printf("2.년수 입력 : ");

           scanf("%d",&year); //년수 입력

           printf("3.이율(%%) 입력 : ");

           scanf("%lf",&rate); //이율 입력

 

           printf("복리 계산 총액은 %.2lf원입니다.\n", c_interest(money,year,rate)); //결과 출력

 

           return 0;

}

 

/*함수정의*/

double c_interest(int a,int n,double r)

{

           return a*mypow(1+(r*0.01),n);

}

//////////////////////////////////////////

double mypow(double m, int n)

{

           int i; //for문용

           double total = 1; //총합

 

           for(i=0;i<n;i++)

                     total *= m;

 

           return total;

}


#include <stdio.h>

 

int main(void)

{

           char ch; //문자변수

           int line = 0; //줄바꿈을 위한 변수

           int count = 0; //총 문자열 개수

 

           printf("간단한 영문 텍스트를 입력하시오(끝내려면 #)\n");

           while ( (ch = getchar())!= '#' ) {

                     printf("%c-%d\t",ch,ch); //문자와 아스키코드값 출력

                     count++; //문자 개수

                     if(count % 8 == 0) { //줄바꿈

                                printf("\n");

                     }

           }

           printf("\n문자의 총 개수 %d개이다.\n",count); //결과값 출력

 

           return 0;

}

#include <stdio.h>

 

int main(void)

{

           int num;

           int i;

           int ok = 1;

 

           printf("소수를 검사할 숫자 입력 : ");

           scanf("%d",&num); //숫자 입력

 

           for(i=2;i<num;i++) { //소수인지 검사하는 부분

                     if ( num%i == 0 )

                                ok--;

           }

 

           if( ok == 1 )

                     printf("정수 %d는 소수입니다.\n",num); //소수일 경우출력

           else

                     printf("정수 %d는 합성수입니다.\n",num); //소수가 아닐경우 출력

 

           return 0;

}


+ Recent posts