티스토리 뷰

jungol > 문제 > Langauge_Corder > 연산자 - 자가진단 1~4

자가진단 1

 



드디어 연산자이다 다다다다다

연산자는 + * / - % == ? 등
여러 가지가 있다.

이번 자가진단 1에서 쓸 연산자는
더하기(+)와 나누기(/)이다.



문제에 관한 코드



변수 3개를 입력받고
이것들의 합과 평균을 구하는 문제다.
(전에 입력에서 풀었던 것과 매우 비슷하다)

이번에도 소수점은 버림 하여 출력하라고 문제에서 말하고 있기에

(a+b+c)/3의 결과는 %d로 받으면서, 소수점 이하를
버림했다!




여러번 실행한 예.


소수점 없이 잘 나왔다.






자가진단 2

 



이번엔 정수형 변수를 두 개 만든 다음 출력하면 된다!



코드


문제에서 b에 10을 나눴을 때의 나머지를 요구하므로

나머지를 구할 수 있는 연산자인 %을 사용했다.

  • 12) printf(%d, b%10);

(위는 b를 10으로 나눴을 때의 나머지를 구하는 코드)

% 은 나머지를 구하는 연산자.

ex) 10%2 = 0 17%2 = 1

ex) 1 % 10 = 1 (1÷10 은 몫이 0 나머지가 1이다)

 

반복 실행 결과



아직까진 매우 쉽다!



 

자가진단 3

 



이번 문제는 c언어에서의 덧셈 뺄셈에 관한 문제다.




c언어 덧셈과 뺄셈

a = a + 1; //a값에 1을 더한다

a = a - 1; //a값에 1을 뺀다

a += 1; //a값에 1을 더한다

a -= 1; //a값에 1을 뺀다

a++(후치 연산), ++a(전치 연산)
// a값에 1을 더한다. 그러나 조금 다르다.

a--(후치 연산), a--(전치 연산)
// a값에 1을 뺀다. 그러나 조금 다르다.


전치 연산

전치 연산

ex) int a=0;

int b = 0;

b = ++a;



컴퓨터는 이를 변수 a의 값에 1을 더한 다음 변수 b에 대입한다.

그러므로 a = 1, b = 1이다.



이번 문제는 c언어에서의 덧셈 뺄셈에 관한 문제다.




c언어 덧셈과 뺄셈

후치 연산

ex) int a=0;

int b = 0;

b = a++;


컴퓨터는 이를 변수 a값을 변수 b에 대입한 뒤 변수 a값에 1을 더한다.

그러므로 a = 1, b = 0이다.

 

코드



문제에선 정수를 입력받고

처음엔 후치 연산을
다음엔 전치 연산을 하고 출력을 하라 했다.

그래서

  • 8) printf("%d\n", a++);
  • 9) printf("%d\n", ++a);


이렇게 8)엔 후치 연산을
9)에는 전치 연산을 했다.



여러번 실행 했을 때



위 결과를 보면

입력값 : 2 ---> %d에 들어온 값 : 2 ---> 후치연산 3 ---> 전치연산 후 %d에 들어온 값 4

= 를 통한 대입뿐만이 아니라
%d 등 서식지정자가 변수로부터 값을 받을 때도

후치 연산일 경우, 먼저 변숫값이 서식지정자에 간 다음, 후치 연산이 이루어지는 것을 알 수 있다.

재밌었다.





자가진단 4

 



이번에도 전치 연산과 후치 연산에 관련된 문제다.

입력 예와 출력 예를 보면

10 20 11 19 190

으로 나왔다.

즉 10 * 19 = 190이므로

10은 후치 증가를 20은 전치 감소를 했다.
(물론 문제에서 이미 말해줬다)



코드



변수를 2개 만들고


  • 10) c = (a++) * (--b);



각각 후치 증가, 전치 감소를 하면서 곱한 값을 새로운 변수에다가 집어넣었다.


반복 실행 결과


매우 잘 작동한다!




코드

 

자가진단 1

#include <stdio.h>

int main(void)

{
int a =0;
int b=0;
int c=0;

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

printf("sum : %d\n", a+b+c);
printf("avg : %d", (a+b+c)/3);
return 0;
}

자가진단 2
#include <stdio.h>

int main(void)

{
int a =0;
int b=0;
scanf("%d", &a);
scanf("%d", &b);

printf("%d ", a+100);
printf("%d", b%10);

return 0;
}
자가진단 3
+코드+

#include <stdio.h>

int main(void)
{
int a = 0;
scanf("%d", &a);

printf("%d\n", a++);
printf("%d\n", ++a);
return 0;
}
자가진단 4
#include <stdio.h>

int main(void)
{
int a = 0;
int b = 0;
scanf("%d", &a);
scanf("%d", &b);

int c = 0;
c = (a++) * (--b);

printf("%d %d %d\n", a, b, c);
return 0;
}
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함