C언어 1주차

5 minute read

c언어 기초 학습

1.Hello world

#include <stdio.h> //라이브러리 추가하는 부분 , stdio는 기본 라이브러리  

int main(void) //void는 매개 변수이다  
{
	printf("Hello world");
	return 0;
}

1 hello world

c언어를 처음시작할때 작성해보는 프로그램으로 Stdio는 printf 등의 함수를 포함하는 기본 라이브러리이다. 여기서 짚고 넘어가야할 부분은 int값을 지정했기에 프로그램이 실행되면 숫자 0값을 반환하면서 실행한다는 점이다. 참고로 void는 매개 변수이다.

2.size

#include <stdio.h>

int main(void)
{
	int x; 
	x=5;
	printf("변수 x의 메모리 크기는  %d입니다.",sizeof(x)); //sizeof는 메모리크기가 얼마나 되는지 알려줌  
	return 0;
}

2 size

sizeof는 메모리의 크기가 얼마나 되는지 알려주는 함수이다.

3.variable test

#include <stdio.h>

int main(void)
{
	int x=50;
	float y= 123456789.123456789; //float는 4바이트까지 출력가능  
	double z = 123456789.123456789; //double은 8바이트가능  
	printf("x=%d\n",x);
	printf("y=%.2f\n",y);
	printf("z=%.2f\n",z);
	return 0;
}

3 variable test

float는 4바이트까지 출력할 수 있고 double은 8바이트 가능하다.

4.overflow

#include <stdio.h>
#include <limits.h> //INT_MAX를 포함하고 있는 라이브러리이다. 

int main(void)
{
	int x = INT_MAX; //INT_MAX는 int형이 가질수 있는 최고로 큰 값이다. 
	printf("int형의 최대값 x는 %d입니다.\n",x);
	printf("x + 1은 %d입니다. \n", x + 1); //최대값을 넘어 한바퀴 돌아 최소값이 나오게된다. 오버플로우다. 
	return 0;
 } 

4 overflow

INT_MAX 함수를 쓰기 위해 limits.h 라이브러리를 불러와야한다. INT_MAX란 int형이 가질 수 있는 최고로 큰 값인데 여기에 +1값을 해주면 한바퀴 돌아 최소값이 나오게 된다. 이것을 오버플로우라고 한다.

5.variable test2

#include <stdio.h>

int main(void)
{
	int x=10;
	int y=20;
	printf("X=%d입니다.\n",x);
	printf("y=%d입니다.\n",y);
	printf("x+y=%d입니다.\n", x+y);
	printf("x-y=%d입니다.\n", x-y);
	printf("x*y=%d입니다.\n", x*y);
	printf("x/y=%d입니다.\n", x/y); //몫만 나온다. 
	return 0;
 } 
 

5 variable test2

연산자를 위와 같이 사용할 수 있다.

6.sarary

#include <stdio.h>
#define MONTHS 12 //상수에 대한 정의 
//연봉 계산  
int main(void)
{
	double monthSalary =1000.5;
	printf("$ %.2f", monthSalary*MONTHS);
	return 0;
} 

6 sarary

연봉을 계산해주는 프로그램을 한번 만들어보면 위의 코드처럼 짤 수 있다. 먼저 MONTHS 상수를 12로 정의해주고 한달 월급 x 12로 연봉을 알 수 있다.

7.int and char

#include <stdio.h>

int main(void)
{
	char x ='A'; //char는 내부적으로는 숫자를 이용하여 문자를 표시하는 것이다. 정확히 아스키코드  
	printf("%c\n", x);
	char y = 65; //아스키 코드로 65는 A이다. 
	printf("%c\n", y);
	char z ='B';
	printf("%c\n", z);
	return 0;
 } 

7 int and char

char는 내부적으로는 숫자를 이용하여 문자를 표시하는 것인데 예를 들어 숫자 65를 char로 받으면 문자 ‘A’가 출력됨을 알 수 있다. 문자 그대로를 나타내고 싶을때도 char를 쓴다.

8.int changing

#include <stdio.h>

int main(void)
{
	int x =100;
	printf("10진수로 출력: %d\n",x);
	printf("8진수로 출력: %o\n",x);
	printf("16진수로 출력 : %x\n",x);
	return 0;
}

8 int changing

숫자 100을 10진수, 8진수, 16진수로 각각 나타내본 프로그램이다. 10진수는 %d, 8진수는 %o, 16진수는 %x를 쓴다는 것을 알아둬야한다.

9.get second

#include <stdio.h>
#define SECOND_PER_MINUTE 60

//초를 입력받아 몇분 몇초인지 계산해주는 프로그램 

int main(void)
{
	int input=1000;
	int minute = input / SECOND_PER_MINUTE;
	int second = input % SECOND_PER_MINUTE;
	printf("%d초는 %d분 %d초 입니다.\n",input, minute, second);
	return 0;
}

9 get second

이번에는 초를 입력받아서 몇분 몇초인지 계산해주는 프로그램을 만들어 보았다. 먼저 SECOND_PER_MINUTE 상수를 60으로 정의해주고 minute은 앞서 정의해준 SECOND_PER_MINUTE으로 나누어줘서 몫만 구해준다. 그 다음 second는 %를 사용하여 나머지만 계산해주어 최종적으로 합쳐 분, 초로 나타낼 수 있다.

10.plus plus

#include <stdio.h>

int main(void)
{
	int x=0;
	printf("현재의 x는 %d입니다.\n",x);
	x++;
	printf("현재의 x는 %d입니다.\n",x);
	printf("현재의 x는 %d입니다.\n",x--);
	printf("현재의 x는 %d입니다.\n",x);
	printf("현재의 x는 %d입니다.\n",--x);
    return 0;
 } 

10 plus plus

X++같은 경우 바로 1을 더해주는 것이고 X–인 경우 그대로 x를 출력하되 앞으로 나올 x값을 1만큼 빼준다.

11.complicated

#include <stdio.h>
//복합연산 
int main(void)
{
	int x=100;
	printf("현재 x의 값은 %d입니다.\n", x);
	x +=50; //x = x+50;
	printf("현재 x의 값은 %d입니다.\n", x);
	x -=50; //x= x-50;
	printf("현재 x의 값은 %d입니다.\n", x);
	x *=50; //x= x*50;
	printf("현재 x의 값은 %d입니다.\n", x);
	x /=50;
	printf("현재 x의 값은 %d입니다.\n", x);
	x %= 3;
	printf("현재 x의 값은 %d입니다.\n", x);
	return 0;
}

11 complicated

복합연산자로 위의 코드내용을 잘 파악해야한다.

12.Relations

#include <stdio.h>

int main(void)
{
	int x =50, y=30;
	//x가 y와 같은 값을 가지고 있는가?
	//x=y->x와 y가 같은 상황 그 자체를 의미 
	//x==y -> true, x와 y가 같은 값을 가진다. 
	printf("x가 y와 같은가? %d\n", x==y); //1은 참값 0은 거짓
	printf("x가 y와 다른가? %d\n", x !=y);
	printf("x가 y보다 큰가? %d\n", x>y);
	printf("x가 y보다 작은가? %d\n", x<y);
	printf("x가 y값을 넣으면? %d\n", x=y); //y라는 값을 x에 넣어라는 뜻이다. 
	return 0;
}

12 Relations

관계연산자로 != 와 == < >에 대해 파악해놔야한다.

13.Logic

#include <stdio.h>

int main(void)
{
	int x=50, y=30;
	printf("x가 y보다 크고 y는 40미만입니까? %d\n", (x>y) && (y<40)); //&&은 and의 의미 
	printf("x가 y보다 작거나 혹은 y가 30입니까? %d\n", (x<y) || (y==30)); //||은 or의 의미  
	printf("x가 50이 아닙니까? %d\n", x !=50);
	return 0;
}

13 Logic

논리 연산자로 &&은 and의 의미,   는 or의 의미를 가진다.

14.condition

#include <stdio.h>

int main(void)
{
	int x=-50, y=30;
	int absoulteX= (x>0)? x : -x; //x가 0보다 크다면 x자체를 반환하고 x가 0보다 작으면 -x값 반환 
	int max= (x>y)? x: y;
	int min= (x<y)? x: y;
	printf("x의 절댓값은 %d입니다.\n", absoulteX);
	printf("x의 y중에서 최댓값은 %d입니다.\n", max);
	printf("x의 y중에서 최솟값은 %d입니다.\n", min);
	return 0;
 } 

14 condition

조건 연산자로 절대값을 반환하는 함수를 만든 프로그램이다.

15.Pow

#include <stdio.h> 
#include <math.h> //pow함수를 이용하기위해 추가해야하는 부분, pow(), abs() 등 함수가 존재  

int main(void)
{
    double x= pow(2.0, 20.0);//2의 20제곱이다.
	printf("2의 20제곱은 %.0f입니다.\n", x); 
	return 0; 
}

15 Pow

math 라이브러리를 사용하여 pow함수를 불러왔다. pow함수는 제곱을 사용할 수 있는 함수로 pow(a,b)는 a의 b제곱을 나타낸다.

16.if abs

#include <stdio.h>

int main(void)
{
	int x = -150;
	if(x<0)
	{
		x= -x;
	}
	printf("x의 절대값은 %d입니다.\n",x);
	return 0;
}

16 if abs

조건문으로 만약 ~했다면 ~이고, 아니면 ~이다를 코드로 표현가능하다.

17.credict

#include <stdio.h>

int main(void)
{
	int score = 85;// 학생의 점수를 의미한다.
	if(score>=90)
	{
		printf("당신의 학점은 A입니다.\n");
	 } 
	 else if(score>=80)
	 {
	 	printf("당신의 학점은 B입니다.\n");
	 }
	 else if(score>=70)
	 {
	 	printf("당신의 학점은 C입니다.\n");
	 }
	 else
	 {
	 	printf("당신의 학점은 F입니다.\n");
	 }
	return 0;
}

17 credict

if문을 사용하여 점수를 계산하여 성적을 매기는 프로그램을 만들어보았다.

18.윤년 판독 프로그램

#include <stdio.h>

int main(void)
{
	/*
	윤년=>4년마다, 그렇지만 100년 단위일 때는 윤년에 해당하지 않도록
	윤년=>400년 단위일 때는 어떤 상황이든간에 윤년으로 설정한다. 
	*/
	int year=2016;
	if((year%4 ==0 && year %100 !=0) || year % 400==0)
	{
	   printf("%d년은 윤년입니다.\n", year);	
	}
	else
	{
		printf("%d년은 윤년이 아닙니다.\n", year);
	}
	return 0;
}

18 윤년 판독 프로그램

if문을 사용하여 윤년 판독 프로그램을 만들어 보았다. 여기서 윤년의 정확한 뜻을 알고 문제를 풀어야한다.

19. 1부터 1000까지의 합

#include <stdio.h>

int main(void)
{
	int i =1, sum=0;
	while(i <= 1000)
	{
		sum = sum+i;
		i++;
	}
	printf("1부터 1000까지의 합은 %d입니다.\n",sum); 
	return 0; 
}

19  1부터 1000까지의 합

1부터 1000까지의 합을 구하는 것으로 while문을 사용하였다. while문은 ()안의 조건이 성립하는 동안에 안의 내용을 반복하는 것이다.

20. 사각형 출력하기

#include <stdio.h>
#define N 10

int main(void)
{
	int i, j;
	for(i=0; i<N; i++)
	{
		for(j=0; j<N; j++)
	    {
	    	printf("*");	
		}
		printf("\n");	
	} 
	return 0;
}

20  사각형 출력하기

사각형을 출력하는 것으로 이중 for문을 사용하였다. i가 N보다 작으면 i에다가 1을 더해주고 옆으로 넘어간다고 생각하고 j가 N보다 작으면 j에다가 1을 더해주고 밑으로내려간다고 생각하면 된다.

21. 피라미드 출력하기

#include <stdio.h>
#define N 20

int main(void)
{
	int i, j;
	for(i=0; i<N; i++) //자바에서는 안에 int i=0으로 안쪽에서 int 선언해도되지만 c언어는 밖에서 int 선언해야한다. 
	{
		for(j=N-i-1; j>0; j--)
		{
			printf("  ");
		}
		for(j=0; j<i; j++)
		{
			printf("* ");
	    }
		for(j=0; j<i-1; j++)
		{
			printf("* ");
	    }
		printf("\n");  
	 }
	 return 0; 
}

21  피라미드 출력하기

피라미드 모양을 출력해주는 프로그램으로 여기서 중요 특징은 자바에서는 int로 i를 선언해주지만 c언어에서는 밖에서 선언해야한다는 점이다.

Leave a comment