C언어 1주차
c언어 기초 학습
1.Hello world
#include <stdio.h> //라이브러리 추가하는 부분 , stdio는 기본 라이브러리
int main(void) //void는 매개 변수이다
{
printf("Hello world");
return 0;
}
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;
}
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;
}
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;
}
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;
}
연산자를 위와 같이 사용할 수 있다.
6.sarary
#include <stdio.h>
#define MONTHS 12 //상수에 대한 정의
//연봉 계산
int main(void)
{
double monthSalary =1000.5;
printf("$ %.2f", monthSalary*MONTHS);
return 0;
}
연봉을 계산해주는 프로그램을 한번 만들어보면 위의 코드처럼 짤 수 있다. 먼저 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;
}
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;
}
숫자 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;
}
이번에는 초를 입력받아서 몇분 몇초인지 계산해주는 프로그램을 만들어 보았다. 먼저 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;
}
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;
}
복합연산자로 위의 코드내용을 잘 파악해야한다.
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;
}
관계연산자로 != 와 == < >에 대해 파악해놔야한다.
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;
}
논리 연산자로 &&은 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;
}
조건 연산자로 절대값을 반환하는 함수를 만든 프로그램이다.
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;
}
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;
}
조건문으로 만약 ~했다면 ~이고, 아니면 ~이다를 코드로 표현가능하다.
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;
}
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;
}
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;
}
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;
}
사각형을 출력하는 것으로 이중 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;
}
피라미드 모양을 출력해주는 프로그램으로 여기서 중요 특징은 자바에서는 int로 i를 선언해주지만 c언어에서는 밖에서 선언해야한다는 점이다.
Leave a comment