연산자는 operator
피연산자는 operand
라고 표현함
프로그램의 정의= 어느 목적/명령을 이루기위해 잘 나열된 명령어들의 집합
프로세스의 정의 = 실행중인 프로그램(이순간 메모리와 cpu를 차지한다.)
프로세서 = 하드웨어
나머지연산자 % = mod, modulus 라고 한다.
(주로 홀짝을 구별할때 이용한다. )
다른 자료형이 혼합하여 사용될때
더 큰 자료형으로 바뀐다.(더 큰 그릇에 담긴다.)
이를 묵시적 형변환 이라한다 (implicit)
형변환은 앞에 자료형을 붙이면 된다.
이를 명시적 형변환이라 한다 (explicit)
다음은 간단한 예제들이다
int main()
{
int x,y;
printf("두수를 입력 : ");
scanf("%d %d", &x, &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);
printf("\n");
return 0;
}
결과
두수를 입력 : 10 2
덧셈 : x+y=12
뺄셈 : x-y=8
곱셈 : x*y=20
나눗셈 : x/y=5
다음은 몫과 나머지 예제이다
int main()
{
int x,y;
printf("두수를 입력 : ");
scanf("%d %d", &x, &y);
printf("두수를 나눌때 몫 :%d \n",x/y);
printf("두수를 나눌때 나머지 :%d \n",x%y );
printf("\n");
return 0;
}
결과
두수를 입력 : 40 6
두수를 나눌때 몫 :6
두수를 나눌때 나머지 :4
이다.
다음은 거스름돈 알려주는 프로그램이다
int main()
{
int x,y;
printf("받은돈 : ");
scanf("%d", &x);
printf("상품가격 :");
scanf("%d",&y);
printf("거슬러줄 돈 :%d \n",x-y);
printf("5000원 :%d \n",(x-y)/5000);
printf("1000원 :%d \n",((x-y)%5000)/1000);
printf("500원 :%d \n",(((x-y)%5000)%1000)/500);
printf("100원 :%d \n",((((x-y)%5000)%1000)%500)/100);
printf("\n");
return 0;
}
받은돈 : 10000
상품가격 :2000
거슬러줄 돈 :8000
5000원 :1
1000원 :3
500원 :0
100원 :0
다음은 온도계 단위를 바꾸는 프로그램이다.
int main()
{
double f,c;
printf("화씨온도 : ");
scanf("%lf", &f);
c=(5.0/9.0)*(f-32);
printf("화씨를 섭씨로 하면: %lf \n",c);
printf("섭씨온도 :");
scanf("%lf",&c);
f=(9.0/5.0)*(c+32);
printf("섭씨를 화씨로 하면: %lf \n",f);
printf("\n");
return 0;
}
결과로
화씨온도 : 100
화씨를 섭씨로 하면: 37.777778
섭씨온도 :100
섭씨를 화씨로 하면: 237.600000
이다.
y=++x 와 y= x++의 차이
전자의 경우는 우항의 값을 증가시킨후에
좌항에 할당을 시키는 순서이고
후자는 우항의 연산을 하기전에 좌항에 할당을 시키고
좌항을 증가시키는 차이가 있다
다음 예제로 파악한다.
int main()
{
int x=10;
int y=10;
int a,b;
a=++x;
printf("a=++x 에서 a값은 : %d \n",a);
printf("a=++x 에서 x값은 : %d \n",x);
b=y++;
printf("b=y++ 에서 b값은 : %d \n",b);
printf("b=y++ 에서 y값은 : %d \n",y);
printf("\n");
return 0;
}
결과로
a=++x 에서 a값은 : 11
a=++x 에서 x값은 : 11
b=y++ 에서 b값은 : 10
b=y++ 에서 y값은 : 11
이렇게 등장한다
결과로
복합연산자 += 을 기준으로 보면
x+=y는
x=x+y라는 식을 줄여적은것임.
예제로보면
int main()
{
int x=10;
printf("x+=1 에서 x값은 : %d \n",x+=1);
x=10;
printf("x+=3 에서 x값은 : %d \n",x+=3);
x=10;
printf("x*=3 에서 x값은 : %d \n",x*=3);
printf("\n");
return 0;
}
x+=1 에서 x값은 : 11
x+=3 에서 x값은 : 13
x*=3 에서 x값은 : 30
이렇게 나온다.
자료형 앞에 const를 붙여서
그 자료형의 그릇에 담겨있는 값을 변화시키지 않게 할 수 있다
int main()
{
const int x=10;
printf("x값은 : %d \n",x);
printf("x값은 : %d \n",x+1);
x=x+1;
printf("\n");
return 0;
}
이렇게하면
error C2166: l-value가 const 개체를 지정합니다. 라는 오류가 뜬다
여기서 l-value는 x=x+1; 에서 좌항을 가리키며
이 좌항이 const인데 왜 바꾸는지 알려주는 오류임을 알 수 있다.
(참고로 우항은 r=value 이다.)
탄환의 궤도를 구하는 프로그램 예제
int main()
{
double x,y,t;
const double fx=0.0;
const double fy=0.0;
const double vx=20.0;
const double vy=20.0;
const double g=9.8;
t=1.0;
x=fx+vx*t;
y=fy+vy*t-0.5*g*t*t;
printf("%f초 후의 위치 =(%f, %f) \n", t,x,y);
t=2.0;
x=fx+vx*t;
y=fy+vy*t-0.5*g*t*t;
printf("%f초 후의 위치 =(%f, %f) \n", t,x,y);
t=3.0;
x=fx+vx*t;
y=fy+vy*t-0.5*g*t*t;
printf("%f초 후의 위치 =(%f, %f) \n", t,x,y);
printf("\n");
return 0;
}
결과로
1.000000초 후의 위치 =(20.000000, 15.100000)
2.000000초 후의 위치 =(40.000000, 20.400000)
3.000000초 후의 위치 =(60.000000, 15.900000)
이렇게 나옴
조건문
if(관계연산자를 이용한 조건){}
else{} 이런 형태로 사용한다.
값이 참 이면 1
거짓이면 0 를 사용한다.
&& 는 and의 의미이고
|| 는 or의 의미이다.
이거는 조건2개 이상 붙여서 사용하고 싶을때 사용한다.
이를이용하여 문제를 풀어본다
짝홀 판단하기
int main()
{
int x;
printf("수를 적어라:");
scanf("%d",&x);
if (x%2==0)
{
printf("이건 짝수이다");
}
else
{
printf("이건 홀수이다.");
}
printf("\n");
return 0;
}
결과로
수를 적어라:5
이건 홀수이다
이래 나옴
큰수 파악하기 문제
int main()
{
int x,y;
printf("수를 적어라:");
scanf("%d",&x);
printf("두번째 수를 적어라");
scanf("%d",&y);
if (x>y)
{
printf("%d 가 더큰수이다 \n",x);
}
else
{
printf("%d 가 더큰수이다 \n",y);
}
}
이 결과로
수를 적어라:5
두번째 수를 적어라4
5 가 더큰수이다
가 나온다.
3개중 큰수 파악하기 문제
int main()
{
int x,y,z;
printf("수를 적어라:");
scanf("%d",&x);
printf("두번째 수를 적어라");
scanf("%d",&y);
printf("세번째 수를 적어라");
scanf("%d",&z);
if ((x>y)&&(x>z))
{
printf("%d 가 제일 큰수이다 \n",x);
}
else if ((y>x)&&(y>z))
{
printf("%d 가 제일 큰수이다 \n",y);
}
else if ((z>x)&&(z>y))
{
printf("%d 가 제일 큰수이다 \n",z);
}
if ((x<y)&&(x<z))
{
printf("%d 가 제일 작은수이다 \n",x);
}
else if ((y<x)&&(y<z))
{
printf("%d 가 제일 작은수이다 \n",y);
}
else if ((z<x)&&(z<y))
{
printf("%d 가 제일 작은수이다 \n",z);
}
}
결과로
수를 적어라:1
두번째 수를 적어라2
세번째 수를 적어라3
3 가 제일 큰수이다
1 가 제일 작은수이다
이래 나온다.
간단한 계산기 만들기
int main()
{
char c;
int x,y,r;
printf("식을 적어라");
scanf("%d%c%d",&x,&c,&y);
if (c=='+')
{
r=x+y;
}
else if (c=='-')
{
r=x-y;
}
else if (c=='*')
{
r=x*y;
}
else if (c=='/')
{
if (x>y)
{
r=x/y;
}
else if(y>x)
{
r=y/x;
}
else if(x==y)
{
printf("1나올걸 왜하냐 서로다른수 써라");
}
}
else if (c=='%')
{
if (x>y)
{
r=x%y;
}
else if(y>x)
{
r=y%x;
}
else if(x==y)
{
printf("1나올걸 왜하냐 서로다른수 써라");
}
}
if (x>y)
{
printf("%d%c%d=%d \n",x,c,y,r);
}
else
{
printf("%d%c%d=%d \n",y,c,x,r);
}
return 0;
}
결과로
식을 적어라9/3
9/3=3
이래 나온다.
꿀팁 하나 적자면
scanf오류가 날때
다음 코드를 가장 윗줄 #include 가 있는곳 위든
아래줄이든 아래와 같이 적어본다.
#define _CRT_SECURE_NO_WARNINGS
이걸 맨위에 선언해 주어야 비주얼 스튜디오 내에서
별무리 없이 돌아간다.
'관 > 솔직한 c 언어 공부' 카테고리의 다른 글
c언어 기초 공부 06. (0) | 2019.11.06 |
---|---|
c언어 기초 공부 05. (0) | 2019.11.05 |
c언어 기초 공부 03. (0) | 2019.11.04 |
c언어 기초 공부 02. (0) | 2019.11.03 |
c언어 기초 공부 01. (0) | 2019.11.02 |
댓글