호랑사과
도전! 프로그래밍1 (p.248~250) 본문
도전1
#include <stdio.h>
int main()
{
int num;
printf("정수를 입력하시오 : ");
scanf("%d", &num);
printf("10진수 : %d, 16진수 : %x\n", num, num);
return 0;
}
도전2
#include <stdio.h>
int main()
{
int num1, num2, mult=1;
printf("두 정수를 입력하시오 : ");
scanf("%d %d", &num1, &num2);
if(num1<=num2)
{
for( ; num1<=num2; num1++)
{
for(mult=1; mult<=9; mult++)
printf("%d X %d = %d\n", num1, mult, num1*mult);
printf("\n");
}
}
else
{
for( ; num1>=num2; num2++)
{
for(mult=1; mult<=9; mult++)
printf("%d X %d = %d\n", num2, mult, num2*mult);
printf("\n");
}
}
return 0;
}
도전3
#include <stdio.h>
int main()
{
int num1, num2, GCD, EndGCD;
printf("두 개의 정수 입력 : ");
scanf("%d %d", &num1, &num2);
if(num1>num2)
{
for(GCD=1; GCD<=num2; GCD++)
{
if(num1%GCD==0 && num2%GCD==0)
EndGCD=GCD;
}
}
else
{
for(GCD=1; GCD<=num1; GCD++)
{
if(num1%GCD==0 && num2%GCD==0)
EndGCD=GCD;
}
}
printf("두 수의 최대공약수 : %d\n", EndGCD);
return 0;
}
도전4 (미해결)
#include <stdio.h>
int main()
{
int money=3500, cream=1, crab=1, cola=1;
printf("현재 당신이 소유하고 있는 금액 : %d\n", money);
money=money-1600;//DVD 한 편 값 제외
for( ; money>=cream*500; cream++)
{
money=money-cream*500;
for( ; money>=crab*700; crab++)
{
money=money-crab*700;
for( ; money>=cola; cola++)
{
money=money-cola*400;
if(money==0)
printf("크림빵 %d개, 새우깡 %d개, 콜라 %d개\n", cream, crab, cola);
}
}
}
printf("어떻게 구입하시겠습니까?\n");
return 0;
}
도전5 (미해결)
첫번째
#include <stdio.h>
int main()
{
int num=2, count, divisor=1;
for(count=1; count<=10; count++)
{
for( ; num!=divisor; num++)
{
for(divisor=1; num!=divisor; divisor++)
{
if(num%divisor==0)
{
if(num==divisor)
printf("%d ", num);
}
}
}
}
printf("\n");
return 0;
}
두번째
#include <stdio.h>
int main()
{
int num=2, count=1, k=2;
for(num=2; count<=10; count++)
{
for(k=2; k<num; k++)
{
if(num/k!=0)
{
printf("%d", num);
continue;
}
else
{
k=2;
num++;
}
}
printf("%d ", num);
num++;
}
printf("\n");
return 0;
}
도전6
#include <stdio.h>
int main()
{
int h=3600, m=60, s;
printf("초(second)입력 : ");
scanf("%d", &s);
h=s/h;
s=s-3600*h;
m=s/m;
s=s-60*m;
printf("[h:%d, m:%d, s:%d]\n", h, m, s);
return 0;
}
도전7
#include <stdio.h>
int main()
{
int n, k, mult=1;
printf("상수 n 입력 : ");
scanf("%d", &n);
if(n==1)
printf("공식을 만족하는 k의 최댓값은 0\n");
else
{
for(k=1; mult<n; k++)
mult=mult*2;
printf("공식을 만족하는 k의 최대값은 %d\n", k-1);//k-1이 아닌 k를 하면 기대했던 값보다 1 더 크게 붙음
}
return 0;
}
도전8
#include <stdio.h>
int multiply (int n)
{
if(n==0)
return 1;
else
return 2*multiply(n-1);
}
int main()
{
int n;
printf("정수입력 : ");
scanf("%d", &n);
printf("2의 %d승은 : %d\n", n, multiply(n));
return 0;
}
어제 당직하사하면서 한글로 소스 쳐보고 오늘 사지방에서 바로 올려봅니다.
문제 4, 5는 좀 더 생각해야 풀릴 것 같아서 추후에 올바른 소스를 올려보겠습니다.
나머지 문제들도 처음에 실행 안되는 것들이 있었는데 몇 개만 수정했더니 잘 작동하였습니다.