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 |