-
Notifications
You must be signed in to change notification settings - Fork 0
CHAPTER 04
- 1번 문제
질량과 속력을 실수로 입력받아 운동 에너지를 구하는 프로그램
#include<stdio.h>
int main(void) {
float a, b;
printf("질량(kg)? ");
scanf_s("%f", &a);
printf("속력(m/s)? ");
scanf_s("%f", &b);
printf("운동에너지: %.2f J", a / 2 * b * b);
return 0;
}
[실행 결과]
질량(kg)? 2.7
속력(m/s)? 4
운동에너지: 21.60 J
- 2번 문제
화씨 온도(F)를 실수로 입력받아 섭씨 온도(C)로 변환해서 출력하는 프로그램
#include<stdio.h>
int main(void) {
float a;
printf("화씨온도? ");
scanf_s("%f", &a);
printf("%.2f F = %.2f C", a, (a - 32) * 5 / 9);
return 0;
}
[실행 결과]
화씨온도? 60
60.00 F = 15.56 C
- 3번 문제
질량과 부피를 실수로 입력받아 밀도를 구하는 프로그램
#include<stdio.h>
int main(void) {
float a, b;
printf("질량(g)? ");
scanf_s("%f", &a);
printf("부피(세제곱센티미터)? ");
scanf_s("%f", &b);
printf("밀도: %f", a / b);
return 0;
}
[실행 결과]
질량(g)? 25
부피(세제곱센티미터)? 1000
밀도: 0.025000
- 4번 문제
용매의 질량과 용질의 질량을 정수로 입력받아 용액의 퍼센트 농도를 구하는 프로그램
#include<stdio.h>
int main(void) {
float a, b;
printf("용매(g)? ");
scanf_s("%f", &a);
printf("용질(g)? ");
scanf_s("%f", &b);
// %를 출력하기 위해서는 %%를 사용해야한다.
printf("농도: %.2f %%", b / (a + b) * 100);
return 0;
}
[실행 결과]
용매(g)? 100
용질(g)? 15
농도: 13.04 %
- 5번 문제
반지름과 높이를 정수로 입력받아 원기둥의 부피를 구하는 프로그램
#include<stdio.h>
int main(void) {
float a, b;
printf("반지름의 길이? ");
scanf_s("%f", &a);
printf("높이? ");
scanf_s("%f", &b);
printf("원기둥의 부피: %f", 3.141592 * a * a * b);
return 0;
}
[실행 결과]
반지름의 길이? 5
높이? 10
원기둥의 부피: 785.398000
- 6번 문제
점 A의 좌표 (x1, y1)과 점 B의 좌표 (x2, y2)를 입력받아 두 점 A, B를 지나는 직선의 기울기를 구하는 프로그램
#include<stdio.h>
int main(void) {
float a, b, c, d;
printf("한 점의 좌표 (x1, y1)? ");
scanf_s("%f %f", &a, &b);
printf("또 다른 점의 좌표 (x2, y2)? ");
scanf_s("%f %f", &c, &d);
printf("직선의 기울기: %f", (d - b) / (c - a));
return 0;
}
[실행 결과]
한 점의 좌표 (x1, y1)? 10 20
또 다른 점의 좌표 (x2, y2)? 30 40
직선의 기울기: 1.000000
- 7번 문제
직각 삼각형에서 직각을 낀 두 변 a, b의 길이를 입력받아 빗변의 길이를 구하는 프로그램
#include<stdio.h>
#include<math.h> // sqrt()함수
int main(void) {
double a, b;
printf("및변? ");
scanf_s("%lf", &a);
printf("높이? ");
scanf_s("%lf", &b);
// sqrt() == 루트 연산
printf("빗변의 길이: %lf", sqrt(a * a + b * b));
return 0;
}
[실행 결과]
및변? 10
높이? 20
빗변의 길이: 22.360680
- 8번 문제
반지름의 길이를 입력받아 구의 부피를 구하는 프로그램
#include<stdio.h>
#include<math.h> //pow()함수
// PI값을 정의
#define PI 3.141592
int main(void) {
double a, b;
printf("반지름의 길이? ");
scanf_s("%lf", &a);
// base^n 을 계산하는 함수
b = pow(a, 3);
printf("구의 부피: %lf", 4 * PI * b / 3);
return 0;
}
[실행 결과]
반지름의 길이? 5
구의 부피: 523.598667
- 9번 문제
동영상의 재생시간을 초 단위로 입력받아 몇 시간 몇 분 몇 초인지 출력하는 프로그램
#include<stdio.h>
int main(void) {
int h, m, s;
printf("재생시간(초)? ");
scanf_s("%d", &s);
m = s / 60;
h = m / 60;
s = s % 60;
m = m % 60;
printf("재생시간은 %d시간 %d분 %d초입니다.", h, m, s);
/*
if문을 사용해 변형 가능
if(h == 0 && m != 0) {
printf("재생시간은 %d분 %d초입니다.", m, s);
}
if (h == 0 && m == 0) {
printf("재생시간은 %d초입니다.", s);
}
if (h != 0) {
printf("재생시간은 %d시간 %d분 %d초입니다.", h, m, s);
}*/
return 0;
}
[실행 결과]
재생시간(초)? 4000
재생시간은 1시간 6분 40초입니다.
- 10번 문제
항공권 예약 시 여정의 총 소요시간을 시간 단위로 입력받아서 며칠 몇 시간 몇 분인지 출력하는 프로그램
#include<stdio.h>
int main(void) {
int day, hour, min;
float a;
printf("비행 소요시간(시간)? ");
scanf_s("%f", &a);
day = a / 24;
hour = a - day * 24;
min = (a - (int)a) * 60;
printf("비행 소요시간은 %d일 %d시간 %d분 입니다.", day, hour, min);
/*제어문 사용
if (a >= 24) {
day = a / 24;
hour = a - day * 24;
min = (a - (int)a) * 60;
printf("비행 소요시간은 %d일 %d시간 %d분 입니다.", day, hour, min);
}
else {
hour = a;
min = (a - (int)a) * 60;
printf("비행 소요시간은 %d시간 %d분 입니다.", hour, min);
}*/
return 0;
}
[실행 결과]
비행 소요시간(시간)? 31.5
비행 소요시간은 1일 7시간 30분 입니다.
- 11번 문제
제품의 가격과 할인율(%)을 입력받아서 할인가와 에누리 금액을 출력하는 프로그램
#include<stdio.h>
int main(void) {
float a, b;
printf("제품의 가격? ");
scanf_s("%f", &a);
printf("할인율(%%)? ");
scanf_s("%f", &b);
/*제어문 사용
if (b > 100 || b < 0) {
printf("할인율은 0보다 작거나 100보다 클 수 없다.");
return 0;
}
if (a < 0) {
printf("물건의 값은 0보다 작을 수 없다.");
return 0;
}*/
printf("할인가: %.0f원 (%.0f원 할인)", a - a * (b / 100), a * (b / 100));
return 0;
}
[실행 결과]
제품의 가격? 24000
할인율(%)? 20
할인가: 19200원 (4800원 할인)
- 12번 문제
네비게이션 앱에서 이동거리와 예상 속력으로 도착 예정 시간을 구하는 프로그램
#include<stdio.h>
int main(void) {
float a, b;
int min;
printf("이동 거리(km)? ");
scanf_s("%f", &a);
printf("예상 속력(km/h)? ");
scanf_s("%f", &b);
// 입력받은 실수를 정수형으로 변환
min = int(a / b * 60);
printf("도착까지 예상 소요 시간은 %d분입니다.", min);
return 0;
}
[실행 결과]
이동 거리(km)? 12
예상 속력(km/h)? 30
도착까지 예상 소요 시간은 24분입니다.
- 13번 문제
직선의 시작점의 좌표 (x1, y1)과 끝점의 좌표(x2, y2)를 입력받아 두 점을 연결하는 직선의 길이를 구하는 프로그램
#include<stdio.h>
#include<math.h> // sqrt()함수
int main(void) {
int a, b, c, d;
int x, y;
printf("직선의 시작점 (x1, y1)? ");
scanf_s("%d %d", &a, &b);
printf("직선의 끝점 (x2, y2)? ");
scanf_s("%d %d", &c, &d);
x = a - c;
y = b - d;
// sqrt() == 루트 연산
printf("직선의 길이: %f", sqrt((x * x) + (y * y)));
return 0;
}
[실행 결과]
직선의 시작점 (x1, y1)? 0 0
직선의 끝점 (x2, y2)? 10 20
직선의 길이: 22.360680
- 14번 문제
기본 요금과 월사용량(kWh)을 입력받아 전기 요금을계산하는 프로그램
#include<stdio.h>
int main(void) {
int a, b;
printf("기본 요금? ");
scanf_s("%d", &a);
printf("월 사용량(kwh)? ");
scanf_s("%d", &b);
printf("전기요금: %d원", a + b * 190);
return 0;
}
[실행 결과]
기본 요금? 1600
월 사용량(kwh)? 320
전기요금: 62400원
- 15번 문제
환전 수수료율은 1.75%로 정해져 있다고 가정하고 원-달러 매매 기준율과 환전 우대율(%)를 입력받아 달러를 살 때 적용되는 환율을 결정하고, 구입하고자 하는 달러가 얼마인지 입력받아 몇 원에 해당하는지 출력하는 프로그램
#include<stdio.h>
int main(void) {
double a, b, c;
printf("원/달러 매매기준율? ");
scanf_s("%lf", &a);
printf("환율우대율(0~100)? ");
scanf_s("%lf", &b);
printf("달러 살 때 환율은 %lf입니다.", a + (a * 0.0175 * (1 - (0.01 * b))));
printf("\n구입할 달러(USD)? ");
scanf_s("%lf", &c);
printf("USD %.2lf 살 때 ==> KRW %.2lf", c, c * (a + (a * 0.0175 * (1 - (0.01 * b)))));
return 0;
}
[실행 결과]
원/달러 매매기준율? 1190
환율우대율(0~100)? 70
달러 살 때 환율은 1196.247500입니다.
구입할 달러(USD)? 2000
USD 2000.00 살 때 ==> KRW 2392495.00
- 16번 문제
컴퓨터 시스템에서 32비트 데이터의 최하위 바이트부터 red, green, blue의 순서로 3개 입력받아서 RGB 색상을 만들어서 출력하는 프로그램
#include<stdio.h>
int main(void) {
int r, g, b;
int color = 0;
printf("red? ");
scanf_s("%d", &r);
printf("green? ");
scanf_s("%d", &g);
printf("blue? ");
scanf_s("%d", &b);
// 255보다 큰 값 == 오버플로우
if (r > 255) {
r = 0;
}
if (g > 255) {
g = 0;
}
if (b > 255) {
b = 0;
}
// 비트 연산 or, 쉬프트 연산 <<
color = color | (r << 16);
color = color | (g << 8);
color = color | b;
// %06X == 값이 0이어도 000000으로 출력
printf("RGB 트루컬러: %06X", color);
return 0;
}
[실행 결과]
red? 256
green? 255
blue? 128
RGB 트루컬러: 00FF80
- 17번 문제
32비트 크기의 데이터(부호 없는 정수형)에는 0~31번 비트가 존재한다. 7번째비트만 1인 값, 15번째비트만 1인값, 23번째 비트만 1인 값, 31번재 비트만 1인 값을 구해서 16진수와 10진수로 출력하는 프로그램
#include<stdio.h>
int main(void) {
unsigned short a = 2;
// 쉬프트 연산으로 값을 구한다.
printf(" 7번 비트만 1인 값: %08x %d\n", a << 6, a << 6);
printf("15번 비트만 1인 값: %08x %d\n", a << 14, a << 14);
printf("23번 비트만 1인 값: %08x %d\n", a << 22, a << 22);
printf("31번 비트만 1인 값: %08x %d\n", a << 30, a << 30);
return 0;
}
[실행 결과]
07번 비트만 1인 값: 00000080 128
15번 비트만 1인 값: 00008000 32768
23번 비트만 1인 값: 00800000 8388608
31번 비트만 1인 값: 80000000 -2147483648
Visual Studio 2019 에서 작성 되었습니다.