본문 바로가기

c언어

5. 기초 연산자

1. 사용자로부터 정수 두 개를 입력받고 사칙 연산(덧셈, 뺄셈, 곱셈, 나눗셈) 결과를 출력하세요. 예를 들어 10과 5를 입력받았다면 15, 5, 50, 2가 출력되어야 합니다.

[소스코드]

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <conio.h>

void main() 
{
	int nData1, nData2;
	scanf("%d %d", &nData1, &nData2);
	printf("덧셈:   %d + %d = %d\n", nData1, nData2, nData1 + nData2);
	printf("뺄셈:   %d - %d = %d\n", nData1, nData2, nData1 - nData2);
	printf("곱셈:   %d * %d = %d\n", nData1, nData2, nData1 * nData2);
	if (nData2 != 0)
	{
		printf("나눗셈: %d / %d = %d\n", nData1, nData2, nData1 / nData2);
	}
	

	return;
}

[실행결과]

 

 

2. 사용자로부터 정수를 입력받아 5로 나눈 나머지를 출력하는 프로그램을 작성하세요.

[소스코드]

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <conio.h>

void main() 
{
	int nData;
	printf("Input Your Number: ");
	scanf("%d", &nData);
	printf("5로 나눈 나머지: %d\n", nData % 5);


	return;
}

[실행결과]

 

 

3. 사용자로부터 정수를 입력받고서 오른쪽 3비트의 값만 0으로 초기화하여 출력하는 프로그램을 작성하세요. 예를 들어 사용자가 15를 입력했다면 8을 출력해야 합니다. 단, 절대로 뺄셈 연산자를 사용하지 말고 AND 연산자(&)를 사용해야 합니다.

[소스코드]

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <conio.h>

void main() 
{
	int nData;
	printf("Input Your Number: ");
	scanf("%d", &nData);
	printf("[0x%08x] LSB 3bits 0 masking -> [0x%08x]\n", nData, (nData & (0xfffffff8)));

	return;
}

[실행결과]

 

 

4. 사용자로부터 정수를 입력받고서 오른쪽에서 네 번째 비트 값이 0이 되게 특정 한 비트만 초기화할 수 있는 프로그램을 작성하세요. 복합 대입 연산자( &= )와 NOT 연산자( ~ )를 사용하여 프로그램을 작성해야 합니다.

[소스코드]

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <conio.h>

void main() 
{
	int nData;
	printf("Input Your Number: ");
	scanf("%d", &nData);
	printf("[0x%08x]\n", nData);
	printf("4번째 비트 0으로 masking ->\n");
	nData &= ~(0x00000001 << 3);
	printf("[0x%08x]\n", nData);
	return;
}

[실행결과]

 

 

5. 사용자로부터 정수를 입력받아 부호를 변환하여 출력하는 프로그램을 작성하세요. 예를 들어 3을 입력했다면 -3을, -20을 입력했다면 20을 출력해야 합니다.

[소스코드]

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <conio.h>

void main() 
{
	int nData;
	scanf("%d", &nData);
	printf("%d\n", -nData);
	return;
}

[실행결과]

 

 

6. 사용자로부터 양의 정수를 입력받아 시:분:초 형태로 출력하는 프로그램을 작성하세요.

이 문제를 해결하려면 나눗셈 연산자( / )와 나머지 연산자( % )를 활용할 수 있어야 합니다.

[소스코드]

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <conio.h>

void main() 
{
	int nTime, nHour, nMin, nSecond;
	scanf("%d", &nTime);
    
	nHour = nTime / 3600;
   	nMin = nTime / 60 % 60;
	nSecond = nTime % 60;

	printf("%02d:%02d:%02d\n", nHour, nMin, nSecond);
	return;
}

[실행결과]

 

 

7. 다음 코드를 실행한 결과와 이유를 답하세요.

 

[실행결과]

10

9

출력됨 이유는 후위 연산자의 연산자 우선순위가 가장 낮으므로 표준출력장치에 nData 10이 콘솔에 출력되고 nData의 감소 연산이 일어나므로 이후에 출력하는 nData는 9가 된다.

'c언어' 카테고리의 다른 글

7. 기초 제어문  (0) 2023.06.05
6. 기타 연산자  (0) 2023.05.29
4. 기본 입출력 함수  (3) 2023.05.27
[문법] getchar()/putchar()  (0) 2023.05.08
3. 기본 이론과 개발 도구의 활용 연습문제  (0) 2023.04.30