도전 1
10진수를 입력받아 16진수로 출력해보자
#include <stdio.h>
int main()
{
int A = 0;
printf("정수를 입력하세요");
scanf_s("%d", &A);
printf("10진수 = %d / 16진수 %x", A, A);
return 0;
}
도전 2
두개의 정수를 받아 구구단을 출력하는 프로그램 작성
3과 5을 입력하면 3~5단까지 출력 / 5와 3을 입력하던 3과 5를 입력하던 같은 결과를 출력
#include <stdio.h>
int main()
{
int A = 0,B=0,temp=0;
printf("정수를 입력하세요");
scanf_s("%d %d", &A, &B);
if (A > B)
{
temp = A;
A = B;
B = temp;
}
for (int i = A; i <= B; i++)
{
for (int j = 1; j <= 9; j++)
{
printf(" %d X %d = %d |", i, j, i*j);
}
printf("\n");
}
return 0;
}
도전 3
두 개의 정수를 입력받아 최대 공약수를 구하는 프로그램 작성
#include <stdio.h>
int main()
{
int A = 0,B=0,max=0,temp=0;
printf("두 개 정수를 입력하세요");
scanf_s("%d %d", &A, &B);
if (A > B)
{
temp = A;
A = B;
B = temp;
}
for (int i = 1; i <= B; i++)
{
if (A% i == 0 && B % i == 0)
{
max = i;
}
}
printf("최대공약수 = %d", max);
return 0;
}
유클리드 호제법을 이용한 최대공약수 구하기
#include <stdio.h>
int main()
{
int A = 0,B=0,max=0,temp=0;
printf("두 개 정수를 입력하세요");
scanf_s("%d %d", &A, &B);
if (A > B)
{
temp = A;
A = B;
B = temp;
}
while (A) {
temp = B % A;
B = A;
A = temp;
}
printf("최대공약수 = %d", B);
return 0;
}
도전4
3500원으로 500원 크림빵 / 700원 새우깡 / 400원 콜라를 살 수 있는 경우의 수를 모두 출력하는 프로그램을 만들어라
#include <stdio.h>
int main(void) {
int money = 3500;
for (int i = 1; i <= money/500; i++)
{
for (int j = 1; j <= money/700; j++)
{
for (int k = 1; k <= money/400; k++)
{
if(3500%((500*i)+(700*j)+(400*k))==0)
printf("%d개%d개%d개 \n", i, j, k);
}
}
}
}
도전5
10개의 소수를 출력하는 프로그램을 작성해보자
내가 짠 코드
#include <stdio.h>
int main(void) {
int i, cnt=1;
printf("2, 3, 5, 7");
for(i = 10; cnt<=6; i++)
{
if (i % 10 == 0)
printf("\n");
if (i % 2 != 0 && i % 3 != 0 && i % 5 != 0 && i % 7 != 0)
{
printf("%d ", i);
cnt++;
}
}
return 0;
}
인터넷에 있던 답지를 보고 다시 짜본 코드
#include <stdio.h>
int main(void) {
int AB = 0;
int A = 100;
for (int i = 2; i <= A; i++)
{
int num = 0;
for (int j = 1; j <= i; j++)
{
if (i % j == 0)
{
num++;
}
}
if (num <= 2)
{
printf("%d ", i);
AB++;
}
if (10 <= AB)
break;
}
}
도전6
프로그램 사용자로부터 초를 입력 받은 후에 이를 [시, 분, 초]의 형태로 출력하는 프로그램을 작성해 보자
#include <stdio.h>
int main(void) {
int minute = 0;
int hour = 0, second = 0;
int A = 0;
printf("초를 입력 : ");
scanf_s("%d", &A);
while(A)
{
if(3600 <= A)
{
hour += 1;
A -= 3600;
}
else if (60 <= A)
{
minute += 1;
A -= 60;
}
else
{
second = A;
A = 0;
}
}
printf("시 :%d / 분 : %d / 초 : %d", hour, minute, second);
}
도전7
2의 k승 <= n 공식이 성립하는 k의 최댓값을 계산하여 출력
#include <stdio.h>
int main(void) {
int n;
int k = 1, result = 1;;
printf("상수 n을 입력하세요");
scanf_s("%d", &n);
while (2 * result < n)
{
result *= 2;
k++;
}
printf("k의 최댓값은 %d ", k );
}
도전8
2의 n승을 구하는 재귀함수
#include <stdio.h>
int Re(int A);
int main(void) {
int n;
int k = 1, result = 1;;
printf("정수를 입력하세요");
scanf_s("%d", &n);
printf("2의 %d승은 %d", n, Re(n));
}
int Re(int A)
{
if (A==0)
return 1;
else
return 2 * Re(A-1);
}