반응형

도전 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);

}
반응형

'언어공부 > C언어' 카테고리의 다른 글

(Chapter 11) 1차원 배열 예제  (0) 2021.02.09
(Chapter 11) 1차원 배열  (0) 2021.01.07
다양한 함수 정의하기  (0) 2020.12.28
continue & break의 활용 예제  (0) 2020.12.27
( 열혈 C 프로그래밍) 조건문 예제  (0) 2020.12.25
반응형

 

문제1

3개의 정수를 인자로 전달받아 최대값 최솟값을 출력하는 함수를 정의해보자

#include <stdio.h>

int Maximum(int A, int B, int C);
int Minmum(int A, int B, int C);

int main()
{
	int A, B, C;


	printf("세가지 정수를 입력하세요");
	scanf_s("%d %d %d", &A, &B, &C);

	
	printf("최솟값 : %d / 최대값 : %d", Minmum(A, B, C), Maximum(A, B, C));
	return 0;

}

int Maximum(int A, int B, int C) {
	if (A > B)
		return (A > C) ? A : C;
	else
		return (B > C) ? B : C;
}

int Minmum(int A, int B, int C)
{
	if (A < B)
		return (A < C) ? A : C;
	else
		return (B < C) ? B : C;

}

 

 

문제 2

섭씨 온도를 입력하면 화씨 온도로 반환하는 CelToFah 함수와

화씨 온도를 입력하면 섭씨 온도로 반환하는 FahToCel 함수를 정의하자

#include <stdio.h>

double FahToCel(double Cel);
double CelToFah(double Cel);

int main()
{
	double A;
	int num;

	printf("입력할 온도가 섭씨온도이면 1 / 화씨온도라면 2 를 누르세요!");
	scanf_s("%d", &num);

	switch (num)
	{
	case 1:
		{
			printf("섭씨온도를 입력하세요");
			scanf_s("%lf", &A);


			printf("섭씨 온도 %.lf", CelToFah(A));
			break;
		}
	case 2:
		{
			printf("화씨온도를 입력하세요");
			scanf_s("%lf", &A);


			printf("화씨 온도 %.lf", FahToCel(A));
			break;
		}

	default:
		printf("1또는 2를 입력하세요");
		break;
	}


	return 0;

}

double CelToFah(double Cel)
{
	double Fah = 0;

	Fah = 1.8 * Cel + 32;

	return Fah;
}

double FahToCel(double Fah)
{
	double Cel = 0;

	Cel =  (Fah - 32.0)/1.8;

	return Cel;

}

 

 

 

문제3

인자로 전달된 수만큼의 피보나치 수열을 출력하는 함수를 정의해보자

#include <stdio.h>

int sum(int A);


int main()
{
	int A;


	printf("정수를 입력하세요");
	scanf_s("%d", &A);

	sum(A);

	return 0;

}

int sum(int A) 
{
	int first = 0;
	int second = 1;
	int sum = 0;
	if (A == 1)
		printf("%d", first);
	else
		printf("%d, %d, ", first, second);

	for (int i = 0; i < A-2; i++)
	{
		sum = first + second;
		printf("%d, ", sum);
		first = second;
		second = sum;

		
	}
	
	return 0;
}

반응형
반응형

break

break문이 감싸고 있는 가장 가까운 반복문에서 빠져나온다.

 

continue

for(int i=1; i <=20; i++)
{
	if(i==3|| i==5) 
    	continue;  //i가 3이나 5일때는 실행하지 않고 바로 i값을 증가시킨다
        
   	printf("%d ", i);
}

위 프로그램처럼 continue문은 조건이 일치하면 continue의 밑부분을 실해하지 않고 바로 반복문의 처음 부분으로 돌아간다.

 

 

문제 1

구구단을 출력하되 짝수 단만 출력하는 프로그램 2단은 2x2까지 ~ 8단은 8x8까지 출력 

 

내가 푼 정답

#include <stdio.h>

int main()
{
	for (int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= 9; j++)
		{
			if (i % 2 == 0 )
			{
				printf("%d * %d = %d ", i, j, i * j);
				
				if (i == 2 && j == 2) {
					printf("\n");break;
				}
				
				if (i == 4 && j == 4){
					printf("\n");break;
				}
				if (i == 6 && j == 6) {
					printf("\n");break;
				}
				if (i == 8 && j == 8) {
					printf("\n");break;
				}
			}
			
		}
	}

	return 0;

}

 

 

답안지의 답

#include <stdio.h>

int main()
{
	for (int i = 1; i <= 9; i++)
	{
		if (i % 2 != 0)
			continue;
		for (int j = 1; j <= 9; j++)
		{
			if (i < j)
				break;
			printf("%d X %d = %d ", i, j, i * j);
		}
		printf("\n");
	}

	return 0;

}

i가 짝수가 아닐때 밑에 연산을 무시하도록 continue를 사용해서 효율적으로 짰다. 조건문과 break를 사용해서 간단하게 짬


문제2

다음 식을 만족하는 모든 A와 Z를 구하는 프로그램을 작성해보자

AZ+ZA=99

#include <stdio.h>

int main()
{
	int result, cnt=0;
	for (int A = 0; A <= 9; A++)
	{
		for (int Z = 0; Z <= 9; Z++)
		{
			if (A == Z)
				continue;
			result = (A * 10 + Z) + (Z * 10 + A);
			if (result == 99)
			{
				cnt++;
				printf("%d%d + %d%d = %d  %d\n", A, Z, Z, A, result,cnt);
				
			}
		}
	}

	return 0;

}

if(A == Z) 후에 continue를 하는 이유를 모르겠다. 저 부분을 빼고 실행해도 결과는 같다.

A와 Z가 같을때 99가 나오는 경우가 없기때문에 연산을 줄일려고 하는건가?

반응형
반응형

문제1 

1이상 100미만의 정수 중에서 7의 배수와 9의 배수를 출력하는 프로그램을 작성해 보자. 단! 7의 배수이면서 동시에 9의 배수인 정수는 한번만 출력해야 한다.

 

#include <stdio.h>

int main()
{


	for (int i = 1; i <= 100; i++)
	{
		if (i % 7 ==0|| i % 9==0)
		{
			printf("%d ",i);
		}
	}
	
	return 0;

}

 

 


문제 2

두 개의 정수를 입력 받아서 두 수의 차를  출력하는 프로그램을 구현해 보자. 단, 무조건 큰 수에서 작은 수를 뺸 결과를 출력해야 한다. 예를 들어서 입력된 두 수가 순서에 상관없이 12와 5라면 7이 출력되어야 하고, 입력된 두 수가 순서와 상관 없이 4와 15이라면 12가 출력되어야 한다. 즉 출력결과는 무조건 0 이상이 되어야 한다.

 

#include <stdio.h>

int main()
{
	int A=0, B=0,result=0;

	printf("두가지 정수를 입력하세요! ");
	scanf_s("%d %d", &A, &B);
	
	if (A >= B)
		printf("%d-%d=%d", A, B, A - B);
	else
		printf("%d-%d=%d", B, A, B - A);


	return 0;

}

 


문제 3

학생의 전체 평균점수에 대한 학점을 출력하는 프로그램을 작성하자. 학생의 성적이 90점 이상이라면 A, 80점 이상이라면 B, 70이상 C, 50점 이상 D, 그 미만은 F!

프로그램 실행 시 순서대로 국어 영어 수학 점수를 입력 받는다. 그리고는 평균을 구한 다음 그에 적절한 학점을 출력하면 된다.

 

#include <stdio.h>

int main()
{
	int s = 0, s2 = 0, s3 = 0;
	double avg = 0;
	printf("국어점수를 입력하세요");
	scanf_s("%d", &s);
	printf("영어점수를 입력하세요");
	scanf_s("%d", &s2);
	printf("수학점수를 입력하세요");
	scanf_s("%d", &s3);

	avg = (s + s2 + s3) / 3;

	if (avg >= 90)
		printf("A");
	else if (avg >= 80)
		printf("B");
	else if (avg >= 70)
		printf("C");
	else if (avg >= 50)
		printf("D");
	else
		printf("F");
	

	return 0;

}

 

 


문제 4

문제 2번을 조건 연산자로 해결해보자

#include <stdio.h>

int main()
{
	int A = 0, B = 0, result = 0;

	printf("두가지 정수를 입력하세요! ");
	scanf_s("%d %d", &A, &B);

	result = A >= B ? A - B : B - A;
	
	printf("%d", result);
	

	return 0;

}
반응형
반응형

문제1

프로그램 사용자로부터 두 개의 정수를 입력 받아서, 두 정수를 포함하여 그 사이에 존재하는 정수들의 합을 계산해서 출력하는 프로그램을 작성해보자. 예를 들어서 3과 5가 입력되면 3+4+5의 결과가 출력되어야한다. 첫 번째 입력되는 정수보다 두번째 입력되는 정수가 더 커야 한다는 조건을 건다

#include <stdio.h>

int main()
{
	int A = 0,sum=0;
	int B = 0;

	printf("두 가지 정수를 입력하세요");
	scanf_s("%d %d", &A, &B);

	for(int i=A; i <= B; i++)
	{
		sum += i;
	}
	printf("%d부터 %d까지의 합은 %d", A, B, sum);

	return 0;

}

 

 


문제2

n!=1x2x3x........n

프로그램 사용자로부터 n에 해당하는 정수를 입력 받는다

#include <stdio.h>

int main()
{
	int A = 0,sum=1;

	printf("정수를 입력하세요");
	scanf_s("%d", &A);

	for(int i=1; i <= A; i++)
	{
		sum *= i;
	}
	printf("%d! = %d", A, sum);

	return 0;

}

 

 

while문 do while문으로 만든 반복문을 for반복문으로 재 구현해보자

 

7-1-1

#include <stdio.h>

int main()
{
	int A = 0;

	printf("양의 정수 입력");
	scanf_s("%d", &A);

	for(int i=0; i <  A; i++)
	{
		printf("Hello world %d\n", i+1);
	}
	

	return 0;

}

7-1-2

#include <stdio.h>

int main()
{
	int A = 0, num=0;

	printf("배수의 갯수");
	scanf_s("%d", &num);

	for(int i=3; i<= num*3; i=i+3)
	{
		printf("%d ", i);
	}
	

	return 0;

}

7-1-3

#include <stdio.h>

int main()
{
	int A = 1, sum=0;


	for(;A != 0;)
	{
		printf("정수입력(0 to quit)");
		scanf_s("%d", &A);
		sum += A;
	}
	printf("합계 : %d", A);

	return 0;

}

7-1-4

#include <stdio.h>

int main()
{
	int A = 1, sum=0;
	printf("출력할 단수 입력");
	scanf_s("%d", &A);

	for(int i=9; i>0; i--)
	{
		printf("%dx%d=%d\n", A, i, A*i);
	}

	return 0;

}

7-1-5

#include <stdio.h>

int main()
{
	int A = 1, B = 0, sum=0;
	printf("몇개의 정수를 입력할것인가?");
	scanf_s("%d", &A);
	int C = A;

	for(int i=1; i<=A; i++)
	{
		printf("\n%d번째 정수입력 (남은횟수 %d) :", i, C);
		scanf_s("%d", &B);
		sum += B;
		C--;
	}
	printf("정수 %d개의 평균 = %.2lf", A, (double)sum / A);
	return 0;

}

7-2-1

#include <stdio.h>

int main()
{
	int A = 1, B = 0, sum=0;
	int C = 5;
	int array[5];

	for(int i=1; i<=5; i++)
	{
	
		printf("\n%d번째 정수입력 (남은횟수 %d) :", i, C);
		scanf_s("%d", &B);
		array[i - 1] = B;

		for (;B < 1;)
		{
			printf("1미만의 숫자를 입력하면 안됩니다.");
			C++;
			i--;
			break;
		}
		
		C--;
	}

	for (int i = 0; i < 5; i++)
	{
		printf("array[%d]는 %d \n", i + 1, array[i]);
	}

	return 0;

}

7-2-2

#include <stdio.h>

int main()
{
	int A = 1, B = 0, sum = 0;


	for (int i = 1; i <= 5; i++)
	{

		

		for (; A < i; A++)
		{
			printf("o");

		}
		A = 1;
		printf("*\n");
	}


	return 0;

}

7-3-2

#include <stdio.h>

int main()
{
	int sum = 0;


	for (int i = 2; i <= 100; i+=2)
	{
		sum += i;
	}
	printf("합 : %d", sum);

	return 0;

}

7-3-3

#include <stdio.h>

int main()
{


	for (int i = 2; i <= 9; i++)
	{
		for (int j = 1; j <= 9; j++)
		{
			printf("%dx%d=%d  ", i, j, i * j);
		}
		printf("\n");
	}
	
	return 0;

}

 

반응형
반응형

Do while문 예제 1

#include <stdio.h>

int main()
{
	int total=0, num=0
    
    do
    {
    	printf("정수입력(0 to quit): ");
        scanf_s("%d", &num);
        total +=num;
    }while(num != 0);
    printf("합계 : ", total);
    
    return 0;
}

do~while문은 while문과 다르게 do에 있는 문장을 반드시 한번은 출력하고 while에 있는 조건을 검사하고 만약 while 값이 0이라면 do문을 탈출


문제 1

예제 1의 프로그램을 while문 기반으로 만들어라

방법 1- 변수 num의 값을 적절히 초기화해서 첫 번째 반복조건의 검사결과가 참이 되게 해야한다.

#include <stdio.h>

int main()
{
	int A = 1;
	int sum = 0;

	
	while (A != 0)
	{
		printf("정수 입력(0 to quit)");
		scanf_s("%d", &A);

		sum += A;
	}
	printf("합계 : %d", sum);

	return 0;
}

 

 


방법 2 - while문에 진입하기 전에 프로그램 사용자로부터 값을 1회 입력 받게 한다.

#include <stdio.h>

int main()
{
	int A = 0;
	int sum = 0;

	printf("정수 입력(0 to quit)");
	scanf_s("%d", &A);
	sum += A;

	while (A != 0)
	{
		printf("정수 입력(0 to quit)");
		scanf_s("%d", &A);

		sum += A;
	}
	printf("합계 : %d", sum);

	return 0;
}

 


문제 2

0이상 100이하의 정수 중에서 작수의 합을 출력하는 프로그램을 구현하되, do~while문 기반으로 구현해보자.

참고로 덧셈의 결과는 2550이 되어야한다.

#include <stdio.h>

int main()
{
	int A = 2;
	int sum = 0;
	do {
		sum += A;
		A += 2;
	} while (A <= 100);
	printf("0~100까지 짝수의 합은 : %d", sum);
}

 

 


문제3

2~9단까지 출력하는 do~while문 만들어보자.

#include <stdio.h>

int main()
{
	int A = 2;
	int B = 1;
	do {
		B = 1;
		do {

			printf("%dx%d=%d ", A,B,A*B);
			B++;
		} while (B<=9);
		A++;
		printf("\n");
	} while (A <= 9);

}

 

반응형

+ Recent posts