도전 1

#include <stdio.h>

int main(void)
{
	int num;

	printf("10진수 정수를 입력하세요:");
	scanf("%d", &num);
	printf("16진수: %x", num);

	return 0;
}

도전 2

#include <stdio.h>
void GuDan(int, int);

int main(void)
{
	int num1, num2;
	printf("두 개의 정수를 입력하세요:");
	scanf("%d %d", &num1, &num2);

	if (num1 < num2)
		GuDan(num1, num2);
	else
		GuDan(num2, num1);

	return 0;
}

void GuDan(int num1, int num2)
{
	int i, j;
	for (i = num1; i <= num2; i++)
	{
		for (j = 1; j < 10; j++)
			printf("%d x %d = %d \n", i, j, i * j);
		printf("\n");
	}
}

도전 3

#include <stdio.h>

int GCD(int, int);

int main(void)
{
	int num1, num2;
	printf("두 개의 정수를 입력하세요: ");
	scanf("%d %d", &num1, &num2);

	if (num1 * num2 <= 0)
	{
		printf("자연수를 입력하세요");
		return -1;
	}
	
	printf("두 수의 최대공약수: %d", GCD(num1, num2));

	return 0;
}

int GCD(int num1, int num2)
{
	int i = 1, result = 1;

	while (i <= num1 && i <= num2)
	{
		if (num1 % i == 0 && num2 % i == 0)
			result = i;
		i++;
	}

	return result;
}

도전 4

#include <stdio.h>

int main(void)
{
	int cream = 500, shrimp = 700, cola = 400;
	int total = 3500;
	int i, j, k;

	printf("현재 당신이 소유하고 있는 금액: %d \n", total);
	for (i = 1; i <= total / cream; i++)
		for (j = 1; j <= total / shrimp; j++)
			for (k = 1; k <= total / cola; k++)
				if (i * cream + j * shrimp + k * cola == total)
				{
					printf("크림빵 %d개, 새우깡 %d개, 콜 라 %d개 \n", i, j, k);
					continue;
				}

	printf("어떻게 구입하시겠습니까? \n");
	return 0;
}

도전 5

#include <stdio.h>

int main(void)
{
	int num, i;
	int cnt = 0;

	for (num = 2; cnt < 10 ; num++)
		for (i = 1; i < num; i++)
		{
			if (num % i == 0 && i != 1)
				break;
			if (i == num - 1)
			{
				printf("%d ", num);
				cnt++;
			}
		}

	return 0;
}

도전 6

#include <stdio.h>

int main(void)
{
	int total, hour, min, sec;
	int i, result, remain;

	printf("초(second): ");
	scanf("%d", &total);

	for (i = 0; i < 3; i++)
	{
		result = total / 60;
		remain = total % 60;
		total = result;

		switch (i)
		{
		case 0:
			sec = remain;
		case 1:
			min = remain;
		case 2:
			hour = remain;
		}
	}

	printf("[h:%d, m:%d, s:%d]", hour, min, sec);
	return 0;
}
...더보기

고민中

: 정적변수를 사용.

전역변수와 정적변수는 반드시 상수로 초기화해야한다. 그렇지 않으면 주석과 같은 오류가 발생.

#include <stdio.h>
int Time(void);
int input;

int main(void)
{
	int hour, min, sec;
	int i, remain;

	printf("초(second): ");
	scanf("%d", &input);

	for (i = 0; i < 3; i++)
	{
		remain = Time();

		switch (i)
		{
		case 0:
			sec = remain;
		case 1:
			min = remain;
		case 2:
			hour = remain;
		}
	}
	printf("[h:%d, m:%d, s:%d]", hour, min, sec);
	return 0;
}

int Time(void)
{
	static int total = input;  // 식에 상수값이 있어야 합니다. 이니셜라이저가 상수가 아닙니다.
	int result;

	result = total / 60;
	total = result;

	return total % 60;
}

 

도전 7

#include <stdio.h>

int main(void)
{
	int num, k=0;

	printf("상수 n 입력: ");
	scanf("%d", &num);

	while (1 << k <= num)
		k++;
	printf("공식을 만족하는 k의 최댓값: %d", --k);
	return 0;
}

도전 8

#include <stdio.h>
void Expo(void);
int num;

int main(void)
{
	printf("정수 입력: ");
	scanf("%d", &num);

	Expo();
	return 0;
}

void Expo(void)
{
	static int result = 1;
	static int i = 0;
	
	if (i == num)  // 재귀 탈출조건
	{
		printf("2의 %d승은 %d \n", num, result);
		return;
	}

	result *= 2;
	i++;
	Expo();
}
...더보기
#include <stdio.h>
void Expo(int);
int num;

int main(void)
{
	printf("정수 입력: ");
	scanf("%d", &num);

	Expo(num);
	return 0;
}

void Expo(int n)
{
	static int result = 1;
	
	if (n == 0)  // 재귀 탈출조건
	{
		printf("2의 %d승은 %d \n", num, result);
		return;
	}

	result *= 2;
	Expo(n-1);
}

+ Recent posts