CHAPTER 06 - 0083tony/Core-C-Programming GitHub Wiki

ν•¨μˆ˜

  • 1번 문제

μ§μ‚¬κ°ν˜•μ˜ λ‘˜λ ˆλ₯Ό κ΅¬ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
int get_perimeter(int a, int b) {
	// μ§μ‚¬κ°ν˜•μ˜ λ‘˜λ ˆ = (κ°€λ‘œ + μ„Έλ‘œ) * 2
	return (a + b) * 2;
}
int main(void) {
	int a, b;

	printf("κ°€λ‘œ? ");
	scanf_s("%d", &a);
	printf("μ„Έλ‘œ? ");
	scanf_s("%d", &b);

	printf("μ§μ‚¬κ°ν˜•μ˜ λ‘˜λ ˆ: %d", get_perimeter(a, b));

	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

κ°€λ‘œ? 10
μ„Έλ‘œ? 20
μ§μ‚¬κ°ν˜•μ˜ λ‘˜λ ˆ: 60
  • 2번 문제

μ •μ‚¬κ°ν˜•μ˜ 넓이λ₯Ό κ΅¬ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
float get_area_of_squarer(float a) {
	// μ •μ‚¬κ°ν˜•μ˜ 면적 = ν•œλ³€μ˜ 길이 * ν•œλ³€μ˜ 길이
	return a * a;
}
int main(void) {
	float a;

	printf("ν•œ λ³€μ˜ 길이? ");
	scanf_s("%f", &a);

	printf("μ •μ‚¬κ°ν˜•μ˜ 면적: %f", get_area_of_squarer(a));

	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

ν•œ λ³€μ˜ 길이? 3.5
μ •μ‚¬κ°ν˜•μ˜ 면적: 12.250000
  • 3번 문제

두 점 μ‚¬μ΄μ˜ 직선 거리λ₯Ό κ΅¬ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
#include<math.h> // sqrt(), pow()ν•¨μˆ˜
double distance(int a, int b, int c, int d) {
	// sqrt() == 루트, pow() == κ±°λ“­μ œκ³±
	return sqrt(pow(c - a, 2) + pow(d - b, 2));
}
int main(void) {
	int a, b, c, d;

	printf("μ§μ„ μ˜ μ‹œμž‘μ  μ’Œν‘œ? ");
	scanf_s("%d %d", &a, &b);
	printf("μ§μ„ μ˜ 끝점 μ’Œν‘œ? ");
	scanf_s("%d %d", &c, &d);

	printf("(%d,%d)~(%d,%d) μ§μ„ μ˜ 길이: %f", a, b, c, d, distance(a, b, c, d));

	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

μ§μ„ μ˜ μ‹œμž‘μ  μ’Œν‘œ? 0 0
μ§μ„ μ˜ 끝점 μ’Œν‘œ? 3 4
(0,0)~(3,4) μ§μ„ μ˜ 길이: 5.000000
  • 4번 문제

μ œν’ˆμ˜ 가격과 ν•œμΈμœ¨μ„ 인자둜 λ°›μ•„μ„œ 할인가λ₯Ό λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
int discount_price(int a, int b) {

	return (1 - (0.01 * a)) * b;
}
int main(void) {
	int a, b;

	printf("ν• μΈμœ¨(%%)? ");
	scanf_s("%d", &a);

	// λ¬΄ν•œλ£¨ν”„ for(;;) == while(1)
	for (;;) {
		printf("μ œν’ˆμ˜ 가격? ");
		scanf_s("%d", &b);
		printf("할인가: %d원\n", discount_price(a, b));
		// b == 0 λ¬΄ν•œλ£¨ν”„ νƒˆμΆœ
		if (b == 0) {
			break;
		}
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

ν• μΈμœ¨(%)? 20
μ œν’ˆμ˜ 가격? 5000
할인가: 4000원
μ œν’ˆμ˜ 가격? 2000
할인가: 1600원
μ œν’ˆμ˜ 가격? 0
할인가: 0원
  • 5번 문제

전달받은 μ •μˆ˜κ°€ μ§μˆ˜μΈμ§€ ν™€μˆ˜μΈμ§€ κ²€μ‚¬ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
int is_even(int a) {
	int even = 0;

	// 2둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ 0 == 짝수
	if (a % 2 == 0) {
		even++;
	}
	return even;
}
int is_odd(int a) {
	int odd = 0;

	// 2둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ 1 == ν™€μˆ˜
	if (a % 2 == 1) {
		odd++;
	}
	return odd;
}
int main(void) {
	int a;
	int odd = 0;
	int even = 0;

	printf("μ •μˆ˜λ₯Ό 빈칸으둜 κ΅¬λΆ„ν•΄μ„œ μž…λ ₯ν•˜μ„Έμš”.(λ§ˆμ§€λ§‰μ— 0 μž…λ ₯)\n");

	// λ¬΄ν•œλ£¨ν”„ for(;;) == while(1)
	for (;;) {
		scanf_s("%d", &a);

		if (is_odd(a) == 1) {
			odd++;
		}
		else {
			even++;
		}
		// 0을 μž…λ ₯ν•˜λ©΄ μ§μˆ˜μ™€ ν™€μˆ˜μ˜ 갯수λ₯Ό 좜λ ₯ν•˜κ³  λ¬΄ν•œλ£¨ν”„ νƒˆμΆœ
		if (a == 0) {
			// λ§ˆμ§€λ§‰μ— μž…λ ₯λ˜λŠ” 0은 짝수둜 μž…λ ₯λœλ‹€ κ·ΈλŸ¬λ―€λ‘œ even - 1
			printf("μž…λ ₯받은 μ •μˆ˜ 쀑 μ§μˆ˜λŠ” %d개, ν™€μˆ˜λŠ” %dκ°œμž…λ‹ˆλ‹€.", even - 1, odd);
			break;
		}
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

μ •μˆ˜λ₯Ό 빈칸으둜 κ΅¬λΆ„ν•΄μ„œ μž…λ ₯ν•˜μ„Έμš”.(λ§ˆμ§€λ§‰μ— 0 μž…λ ₯)
12 24 21 42 71 37 100 211 113 0
μž…λ ₯받은 μ •μˆ˜ 쀑 μ§μˆ˜λŠ” 4개, ν™€μˆ˜λŠ” 5κ°œμž…λ‹ˆλ‹€.
  • 6번 문제

메뉴λ₯Ό 좜λ ₯ν•˜κ³  μ„ νƒλœ 메뉴 ν•­λͺ©μ˜ 번호λ₯Ό 좜λ ₯ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int choose_menu(void) {
	int a;

	printf("[1. 파일 μ—΄κΈ°  2.파일 μ €μž₯  3.인쇄  0.μ’…λ£Œ] ");
	scanf("%d", &a);
	
	// μž…λ ₯ 받은 aλ₯Ό 리턴
	return a;
}
int main(void) {

	for (;;) {
		// choose_menu()ν•¨μˆ˜μ˜ λ¦¬ν„΄κ°’μœΌλ‘œ μˆ˜ν–‰ν•  λ‚΄μš©μ΄ 정해짐
		switch (choose_menu()) {
		case 1:
			printf("파일 μ—΄κΈ°λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.\n");
			break;
		case 2:
			printf("파일 μ €μž₯을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.\n");
			break;
		case 3:
			printf("인쇄λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.\n");
			break;
		case 0:
			return 0;
		}
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

[1. 파일 μ—΄κΈ°  2.파일 μ €μž₯  3.인쇄  0.μ’…λ£Œ] 1
파일 μ—΄κΈ°λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.
[1. 파일 μ—΄κΈ°  2.파일 μ €μž₯  3.인쇄  0.μ’…λ£Œ] 2
파일 μ €μž₯을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.
[1. 파일 μ—΄κΈ°  2.파일 μ €μž₯  3.인쇄  0.μ’…λ£Œ] 5
[1. 파일 μ—΄κΈ°  2.파일 μ €μž₯  3.인쇄  0.μ’…λ£Œ] 0
  • 7번 문제

μ •μˆ˜κ°€ μ†Œμˆ˜μΈμ§€ κ²€μ‚¬ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
int is_prime(int n) {
	int i, prime = 0;

	for (int a = 2; a <= n; a++) {
		i = 0; // μ†Œμˆ˜ 검사값
		for (int b = 1; b <= a; b++) {
			if (a % b == 0)
				i++;
		}
		if (i == 2) {
			prime++;
			printf("%5d", a);
			// μ†Œμˆ˜λ₯Ό 10개 좜λ ₯ν•  λ•Œλ§ˆλ‹€ 쀄 λ°”κΏˆ
			if (prime != 0 && prime % 10 == 0)
				printf("\n");
		}
	}
	// μ†Œμˆ˜μ˜ 개수 prime을 리턴
	return prime;
}
int main(void) {
	int n;

	printf("1~Nμ‚¬μ΄μ˜ μ†Œμˆ˜λ₯Ό κ΅¬ν•©λ‹ˆλ‹€. N은? ");
	scanf_s("%d", &n);

	printf("\nμ†Œμˆ˜λŠ” λͺ¨λ‘ %d개 μž…λ‹ˆλ‹€.", is_prime(n));

	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

1~Nμ‚¬μ΄μ˜ μ†Œμˆ˜λ₯Ό κ΅¬ν•©λ‹ˆλ‹€. N은? 100
    2    3    5    7   11   13   17   19   23   29
   31   37   41   43   47   53   59   61   67   71
   73   79   83   89   97
μ†Œμˆ˜λŠ” λͺ¨λ‘ 25개 μž…λ‹ˆλ‹€.
  • 8번 문제

RGB값을 μΆ”μΆœν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
int get_red(int a) {
	// μ‰¬ν”„νŠΈ μ—°μ‚°μœΌλ‘œ Red값을 ꡬ함
	return a >> 16;
}
int get_green(int a) {
	// μ‰¬ν”„νŠΈ μ—°μ‚°μœΌλ‘œ Green값을 ꡬ함
	a = a >> 8;
	a = a & 0xFF;
	return a;
}
int get_blue(int a) {
	a = a & 0xFF;
	return a;
}
int main(void) {
	int a;

	printf("RGB 색상? ");
	scanf_s("%x", &a);

	printf("RGB %X의 Red: %d, Greed: %d, Blue: %d", a, get_red(a), get_green(a), get_blue(a));

	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

RGB 색상? 0xff0080
RGB FF0080의 Red: 255, Greed: 0, Blue: 128
  • 9번 문제

Red, Green, Blue 값을 전달받아 RGB값을 μƒμ„±ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
int get_red(int a) {
	return a >> 16;
}
int get_green(int a) {
	a = a >> 8;
	a = a & 0xFF;
	return a;
}
int get_blue(int a) {
	a = a & 0xFF;
	return a;
}
int make_rgb(int a) {
	int r, g, b;
	int color = 0;

	// λ§ˆμ΄λ„ˆμŠ€ 연산을 톡해 보색을 ꡬ함
	r = 255 - get_red(a);
	g = 255 - get_green(a);
	b = 255 - get_blue(a);

	// or μ—°μ‚°μœΌλ‘œ rgb값을 λ§Œλ“¬
	color = color | (r << 16);
	color = color | (g << 8);
	color = color | b;

	return color;
}
int main(void) {
	int a;

	printf("RGB 색상? ");
	scanf_s("%x", &a);

	printf("RGB %X의 보색: %06X", a, make_rgb(a));
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

RGB 색상? 0xff0080
RGB FF0080의 보색: 00FF7F
  • 10번 문제

rand ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ 0 ~ 99 λ²”μœ„μ˜ μž„μ˜μ˜ μ •μˆ˜ 10개λ₯Ό 좜λ ₯ν•˜κ³  κ·Έ 합계λ₯Ό 좜λ ₯

#include <stdio.h>
#include <stdlib.h> //rand() ν•¨μˆ˜
#include <time.h> //time() ν•¨μˆ˜
int random(int add) {
	int random = 0;
	srand(time(NULL)); // λ§€ 좜λ ₯λ§ˆλ‹€ λ‹€λ₯Έ λ³€μˆ˜λ₯Ό μ–»μŒ

	for (int i = 0; i < 10; i++) {
		// rand() % 100 == 0~99 μ‚¬μ΄μ˜ 랜덀 μ •μˆ˜
		random = rand() % 100;
		printf("%5d", random);
		add = random + add;
	}
	return add;
}
int main(void) {
	int add = 0;

	printf("0 ~ 99μ‚¬μ΄μ˜ μž„μ˜μ˜ μ •μˆ˜λ₯Ό 10개 μƒμ„±ν•΄μ„œ 합계λ₯Ό κ΅¬ν•©λ‹ˆλ‹€.\n");
	printf("\n합계: %d", random(add));

	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

0 ~ 99μ‚¬μ΄μ˜ μž„μ˜μ˜ μ •μˆ˜λ₯Ό 10개 μƒμ„±ν•΄μ„œ 합계λ₯Ό κ΅¬ν•©λ‹ˆλ‹€.
   25   67   63    3    6   69   81   25   27   30
합계: 396
  • 11번 문제

μ—°μ‚°μž 2개, ν”Όμ—°μ‚°μžλ₯Ό 인자둜 λ°›μ•„ 사칙연산을 μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
float calculator(float a, float b, char c) {
	float n = 0;

	switch (c)
	{
	case '+':
		n = a + b;
		break;
	case '-':
		n = a - b;
		break;
	case '*':
		n = a * b;
		break;
	case '/':
		n = a / b;
	default:
		printf("Error!!\n");
		break;
	}

	return n;
}
int main(void) {
	float a = 0, b = 0;
	char c;

	// for(;;), while(1) == λ¬΄ν•œ 루프
	for (;;) {
		printf("μˆ˜μ‹ (0 0 0 μž…λ ₯ μ‹œ μ’…λ£Œ)? ");
		scanf_s("%f %c %f", &a, &c, 30, &b);

		// 0 0 0 μž…λ ₯μ‹œ λ¬΄ν•œλ£¨ν”„ νƒˆμΆœ
		if (a == 0 && b == 0 && c == '0') {
			break;
		}
		printf("%f\n", calculator(a, b, c));
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

μˆ˜μ‹ (0 0 0 μž…λ ₯ μ‹œ μ’…λ£Œ)? 12.34 + 1.123
13.463000
μˆ˜μ‹ (0 0 0 μž…λ ₯ μ‹œ μ’…λ£Œ)? 1234.56 * 0.012
14.814721
μˆ˜μ‹ (0 0 0 μž…λ ₯ μ‹œ μ’…λ£Œ)? 0 0 0
  • 12번 문제

μœ€λ…„μΈμ§€ κ²€μ‚¬ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
int is_leap_year(int i) {
	
	if ((i % 4 == 0) && (i % 100 != 0) || (i % 400 == 0)) {
		return i;
	}
	return 0;
}
int main(void) {
	int count = 0; // μœ€λ…„μ„ 좜λ ₯ν•˜λŠ” 횟수 μΉ΄μš΄ν„°

	printf("2000λ…„ ~ 2100λ…„ μ‚¬μ΄μ˜ μœ€λ…„\n");

	for (int i = 2000; i < 2101; i++) {

		// 리턴값이 0이 μ•„λ‹ˆλ©΄ ν•¨μˆ˜μ—μ„œ 찾은 μœ€λ…„ iλ₯Ό 좜λ ₯
		if (is_leap_year(i) != 0) {
			printf("%dλ…„  ", i);
			count++;

			// 10개의 μœ€λ…„μ„ μ°Ύμ„λ•Œ λ§ˆλ‹€ μ€„λ°”κΏˆ
			if (count % 10 == 0) {
				printf("\n");
			}
		}
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

2000λ…„ ~ 2100λ…„ μ‚¬μ΄μ˜ μœ€λ…„
2000λ…„  2004λ…„  2008λ…„  2012λ…„  2016λ…„  2020λ…„  2024λ…„  2028λ…„  2032λ…„  2036λ…„
2040λ…„  2044λ…„  2048λ…„  2052λ…„  2056λ…„  2060λ…„  2064λ…„  2068λ…„  2072λ…„  2076λ…„
2080λ…„  2084λ…„  2088λ…„  2092λ…„  2096λ…„
  • 13번 문제

연도와 월을 인자둜 전달받아 κ·Έ 달이 며칠인지 κ΅¬ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
int is_leap_year(int year) {
	// μœ€λ…„μΈμ§€ κ²€μ‚¬ν•˜λŠ” ν•¨μˆ˜
	if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
		return year;
	}
	return 0;
}
int get_days_of_month(int year, int i) {
	// ν•΄λ‹Ή 년도 λ‹¬μ˜ λ‚ μ§œμˆ˜λ₯Ό λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜
	if (i != 2 && i != 8 && i / 2 == 0) {
		return 31;
	}
	else if (i == 2) {
		if (is_leap_year(year) != 0) {
			return 29;
		}
		else return 28;
	}
	else return 30;
	
}
int main(void) {
	int year;

	printf("연도? ");
	scanf_s("%d", &year);

	printf("[ %dλ…„ ]\n", year);

	for (int i = 1; i < 13; i++) {
		printf("%2dμ›”:%d일 ", i, get_days_of_month(year, i));
		if (i == 6) {
			printf("\n");
		}
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

연도? 2019
[ 2019λ…„ ]
 1μ›”:31일  2μ›”:28일  3μ›”:30일  4μ›”:30일  5μ›”:30일  6μ›”:30일
 7μ›”:30일  8μ›”:30일  9μ›”:30일 10μ›”:30일 11μ›”:30일 12μ›”:30일
  • 14번 문제

μ—°, μ›”, 일을 전달받아 μœ νš¨ν•œ λ‚ μ§œμΈμ§€ κ²€μ‚¬ν•˜λŠ” ν•¨μˆ˜

#include<stdio.h>
int check_date(int year, int month, int date) {
	int err = 0;

	// μœ€λ…„μΈμ§€ μ•„λ‹Œμ§€ 검사 μœ€λ…„μΌλ•Œ 2월은 29μΌκΉŒμ§€
	if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
		// 달이 0보닀 μž‘κ±°λ‚˜ 12보닀 클 경우 err에 1을 λ”ν•œλ‹€.
		if (month < 0 || month > 12) {
			err++;
		}
		// 8월을 μ œμ™Έν•œ 짝수 달은 30일 ν™€μˆ˜ 달은 31μΌκΉŒμ§€ μžˆλ‹€.
		else if ((month % 2 == 0 && date > 30) && month != 8) {
			err++;
		}
		else if (month == 2 && date > 29) {
			err++;
		}
		else if (month % 1 == 0 && date > 31) {
			err++;
		}
	}
	else if (month < 0 || month > 12) {
		err++;
	}
	else if ((month % 2 == 0 && date > 30) && month != 8) {
		err++;
	}
	// μœ€λ…„μ΄ μ•„λ‹ˆλΌλ©΄ 2월은 28μΌκΉŒμ§€ 
	else if (month == 2 && date > 28) {
		err++;
	}
	else if (month % 1 == 0 && date > 31) {
		err++;
	}
	
	return err;
}
int main(void) {
	int year, month, date;

	for (;;) {
		printf("λ‚ μ§œ (μ—° μ›” 일)? ");
		scanf_s("%d %d %d", &year, &month, &date);

		// 리턴값 0 == μ˜¬λ°”λ₯Έ λ‚ μ§œ, 리턴값 1 == 잘λͺ»λœ λ‚ μ§œ
		if (check_date(year, month, date) == 0) {
			printf("μž…λ ₯ν•œ λ‚ μ§œλŠ” %dλ…„ %dμ›” %d일 μž…λ‹ˆλ‹€.\n", year, month, date);
			break;
		}
		else {
			printf("잘λͺ» μž…λ ₯ν•˜μ…¨μŠ΅λ‹ˆλ‹€. μœ νš¨ν•œ λ‚ μ§œλ₯Ό μž…λ ₯ν•˜μ„Έμš”.\n");
		}
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

λ‚ μ§œ (μ—° μ›” 일)? 2019 13 1
잘λͺ» μž…λ ₯ν•˜μ…¨μŠ΅λ‹ˆλ‹€. μœ νš¨ν•œ λ‚ μ§œλ₯Ό μž…λ ₯ν•˜μ„Έμš”.
λ‚ μ§œ (μ—° μ›” 일)? 2019 1 32
잘λͺ» μž…λ ₯ν•˜μ…¨μŠ΅λ‹ˆλ‹€. μœ νš¨ν•œ λ‚ μ§œλ₯Ό μž…λ ₯ν•˜μ„Έμš”.
λ‚ μ§œ (μ—° μ›” 일)? 2019 2 28
μž…λ ₯ν•œ λ‚ μ§œλŠ” 2019λ…„ 2μ›” 28일 μž…λ‹ˆλ‹€.
  • 15번 문제

μ •μˆ˜ 1357을 1 ~ 3 번째 μžλ¦¬μ—μ„œ λ°˜μ˜¬λ¦Όν•΄ 좜λ ₯ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
#include<math.h> // pow()ν•¨μˆ˜
int round_pos(int n) {
	int a = 0;

	a = pow(10, n); // 10의 n승
	// 1의 μžλ¦¬μ—μ„œ 반올림 μ•Œκ³ λ¦¬μ¦˜ == (X + 5) / 10 * 10
	return (((1357 + (5 * a)) / (10 * a)) * (10 * a));
}
int main(void) {

	for (int n = 0; n < 3; n++)
		printf("%d번째 μžλ¦¬μ—μ„œ λ°˜μ˜¬λ¦Όν•œ κ²°κ³Ό: %d\n", n, round_pos(n));
	
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

0번째 μžλ¦¬μ—μ„œ λ°˜μ˜¬λ¦Όν•œ κ²°κ³Ό: 1360
1번째 μžλ¦¬μ—μ„œ λ°˜μ˜¬λ¦Όν•œ κ²°κ³Ό: 1400
2번째 μžλ¦¬μ—μ„œ λ°˜μ˜¬λ¦Όν•œ κ²°κ³Ό: 1000
  • 16번 문제

32λΉ„νŠΈλ°μ΄ν„°μ™€ λΉ„νŠΈ μœ„μΉ˜ posλ₯Ό 인자둜 전달받아 32λΉ„νŠΈ λ°μ΄ν„°μ˜ pos번째 λΉ„νŠΈκ°€ 1이면 1 μ•„λ‹ˆλ©΄ 0을 λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
int is_bit_set(int num,int pos) {
	// pos번째 λΉ„νŠΈμ˜ 값을 μ°Ύκ³ , 쑰건 μ—°μ‚°
	if (((num & (1 << (pos - 1))) ? 1 : 0) == 0) {
		return 0;
	}
	else if (((num & (1 << (pos - 1))) ? 1 : 0) == 1) {
		return 1;
	}
	else return -1;
}
int main(void) {
	int num;
	int count = 0;

	printf("μ •μˆ˜? ");
	scanf_s("%x", &num);
	printf("%X: ", num);

	for (int i = 32; i > 0; i--) {
		printf("%d", is_bit_set(num, i));
		count++;
		// 4bit 좜λ ₯μ‹œ μΉΈ λ„μš°κΈ°, count μ΄ˆκΈ°ν™” 
		if (count == 4) {
			printf(" ");
			count = 0;
		}
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

μ •μˆ˜? 0x12345678
12345678: 0001 0010 0011 0100 0101 0110 0111 1000
  • 17번 문제

μ „λ‹¬λœ 점의 μ’Œν‘œκ°€ μ–΄λŠ μ‚¬λΆ„λ©΄μ˜ 점인지 μ•Œλ €μ£ΌλŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
int get_quadrant(int x, int y) {

	// 점의 μœ„μΉ˜ n뢄면을 μ°Ύμ•„μ„œ 리턴
	if (x > 0 && y > 0) return 1;

	else if (x < 0 && y > 0) return 2;

	else if (x < 0 && y < 0) return 3;

	else if (x > 0 && y < 0) return 4;
		
	return 0;
}
int main(void) {
	int x, y;

	for (;;) {
		printf("점의 μ’Œν‘œ (x, y)? ");
		scanf_s("%d %d", &x, &y);

		switch (get_quadrant(x, y)) {
			// 0 λ¦¬ν„΄μ‹œ ν”„λ‘œκ·Έλž¨ μ’…λ£Œ
		case 0:
			return 0;
		case 1:
			printf("1사뢄면에 μžˆμŠ΅λ‹ˆλ‹€.\n");
			break;
		case 2:
			printf("2사뢄면에 μžˆμŠ΅λ‹ˆλ‹€.\n");
			break;
		case 3:
			printf("3사뢄면에 μžˆμŠ΅λ‹ˆλ‹€.\n");
			break;
		case 4:
			printf("4사뢄면에 μžˆμŠ΅λ‹ˆλ‹€.\n");
			break;
		}
	}
}
[μ‹€ν–‰ κ²°κ³Ό]

점의 μ’Œν‘œ (x, y)? 10 20
1사뢄면에 μžˆμŠ΅λ‹ˆλ‹€.
점의 μ’Œν‘œ (x, y)? -10 20
2사뢄면에 μžˆμŠ΅λ‹ˆλ‹€.
점의 μ’Œν‘œ (x, y)? 0 0
  • 18번 문제

0 ~ 999 μ‚¬μ΄μ˜ λ‚œμˆ˜μ˜ μ•½μˆ˜λ₯Ό κ΅¬ν•΄μ„œ 좜λ ₯ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include <stdio.h>
#include <stdlib.h> // rand(),srand() ν•¨μˆ˜
#include <time.h> // time() ν•¨μˆ˜
void divisors(int a) {
	int count = 0;

	printf("%d의 μ•½μˆ˜: ", a);

	for (int i = 1; i <= a; i++) {
		// λ‚œμˆ˜ aλ₯Ό 1λΆ€ν„° aκΉŒμ§€ λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ 0 == count++
		if (a % i == 0) {
			// count에 μ•½μˆ˜μ˜ 개수 μ €μž₯
			count++;
			printf("%3d ", i);
		}
	}
	printf("==> 총 %d개\n", count);
}
int main(void) {
	srand(time(NULL)); // 항상 λ‹€λ₯Έ λ‚œμˆ˜λ₯Ό 얻을 수 μžˆλ‹€.
	int i;
	
	for (i = 0; i < 3; i++) {
		// 0~999 μ‚¬μ΄μ˜ λ‚œμˆ˜
		int a = rand() % 1000;
		divisors(a);
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

798의 μ•½μˆ˜:   1   2   3   6   7  14  19  21  38  42  57 114 133 266 399 798 ==> 총 16개
520의 μ•½μˆ˜:   1   2   4   5   8  10  13  20  26  40  52  65 104 130 260 520 ==> 총 16개
844의 μ•½μˆ˜:   1   2   4 211 422 844 ==> 총 6개
  • 19번 문제

수치 데이터와 μŠ€μΌ€μΌμ„ 인자둜 λ°›μ•„ κ·Έλž˜ν”„λ₯Ό 좜λ ₯ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include <stdio.h>
#include <stdlib.h> // rand(),srand() ν•¨μˆ˜
#include <time.h> // time() ν•¨μˆ˜
void make_graph(int a) {
	a = a / 100;

	for (int i = 0; i <= a; ++i) {
		printf("*");
	}
	printf("\n");
}
int main(void) {
	srand(time(NULL)); // 맀회 λ‹€λ₯Έ λ‚œμˆ˜λ₯Ό μ–»μŒ
	int i;

	for (i = 0; i < 3; i++) {
		// 0~9999 μ‚¬μ΄μ˜ λ‚œμˆ˜λ₯Ό a에 μž…λ ₯
		int a = rand() % 10000;
		printf("%d: ", a);
		make_graph(a);
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

3657: *************************************
2303: ************************
3297: *********************************
  • 20번 문제

μ „κΈ° μš”κΈˆμ„ κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜ ν”„λ‘œκ·Έλž¨

#include<stdio.h>
double electric_charge(unsigned int kwh) {
	double a = 0, b = 0;

	// μ‚¬μš©λŸ‰μ— λ”°λ₯Έ μ „λ ₯λŸ‰ μš”κΈˆ + κΈ°λ³Έ μš”κΈˆ 계산
	if (0 < kwh <= 20) {
		a = 910;
		b = 93.3 * kwh;

		if (200 < kwh < 400) {
			a = 1600;
			b = 187.9 * (kwh - 200) + (200 * 93.3);

			if (400 < kwh) {
				a = 7300;
				b = 280.6 * (kwh - 400) + (200 * 93.3) + (200 * 187.9);
			}
		}
	}
	// a == κΈ°λ³Έ μš”κΈˆ, b == μ „λ ₯λŸ‰ μš”κΈˆ
	return a + b;
}
int main(void) {
	unsigned int kwh;

	for (;;) {
		printf("μ›” μ‚¬μš©λŸ‰ (kwh)? ");
		scanf_s("%d", &kwh);
		// -1 μž…λ ₯μ‹œ ν”„λ‘œκ·Έλž¨ μ’…λ£Œ
		if (kwh == -1) break;

		printf("μ „κΈ° μš”κΈˆ 합계: %.0f원\n", electric_charge(kwh));
	}
	return 0;
}
[μ‹€ν–‰ κ²°κ³Ό]

μ›” μ‚¬μš©λŸ‰ (kwh)? 350
μ „κΈ° μš”κΈˆ 합계: 48445원
μ›” μ‚¬μš©λŸ‰ (kwh)? 420
μ „κΈ° μš”κΈˆ 합계: 69152원
μ›” μ‚¬μš©λŸ‰ (kwh)? -1
⚠️ **GitHub.com Fallback** ⚠️