제어문 심화 문제

최주영·2022년 12월 3일
0

C언어

목록 보기
6/15

✅1번 문제

  • 문제 : 1~100 숫자 중 3의 배수가 아닌 것을 모두 출력하고, 모두 몇 개인지 표시

  • 소스코드

#include <stdio.h>
int main(void)
{
	int i;
	int count = 0;

	printf("1번문제 : 1~100 숫자 중 3의 배수가 아닌 것을 모두 출력하고, 모두 몇 개인지 표시하시오\n");
	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("1~100중 3의 배수가 아닌것은 : ");
	for (i = 1; i <= 100; i++)
	{
		if (i % 3 != 0)
		{
			printf("%d, ", i);
			count++;
		}
	}
	printf("\n\n");
	printf("(!) 1~100 중 3의 배수가 아닌것은 총 %d개 입니다.\n", count);
	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("작성자 : 최주영/2017E7043\n");
	return 0;
}
  • 순서도
  • 출력결과

✅2번 문제

  • 문제 : 1~100 숫자 중 3의 배수가 아닌 것을 모두 출력하고, 모두 몇 개인지 표시

  • 소스코드

#include <stdio.h>

int main(void)
{
	int i;
	int exp = 0;
	int exp1 = 0;
	printf("1-2+3/4*5+6-7+8/9*10+11-12+13/14*15+ .... +996-997+998/999*1000 = ? 의 결과값은?\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	for (i = 1; i <= 1000; i++)
	{
		if (i % 5 == 1)
		{
			printf("%d-", i);
		}
		if (i % 5 == 2)
		{
			printf("%d+", i);
		}
		if (i % 5 == 3)
		{
			printf("%d/", i);
			exp = exp + i / (i + 1) * (i + 2);
			exp1 = exp1 + (i - 2) - (i - 1) + exp;
		}
		if (i % 5 == 4)
		{
			printf("%d*", i);
		}
		if (i % 5 == 0)
		{
			printf("%d+", i);
		}

	}
	printf("\n");
	printf("결과값은 %d입니다.\n", exp1);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("작성자 : 최주영/2017E7043\n");
        return 0;
}
  • 순서도
  • 출력결과

✅3번 문제

  • 문제 : 1000 이하의 값을 갖는 피보나치(Fibonacci) 수열을 출력하고, 그 개수를 표시

  • 소스코드

#include <stdio.h>

int main(void)
{
	printf("3번문제 : 1000 이하의 값을 갖는 피보나치(Fibonacci) 수열을 출력하고, 그 개수를 표시하시오.\n");
	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	int cnt = 0;
	int a = 1;
	int b = 1;
	int tmp = 0;

	printf("%d\n", a);
	printf("%d\n", b);
	while (1)
	{
		tmp = a + b;
		if (tmp > 1000)break;
		printf("%d\n", tmp);
		cnt++;
		a = b;
		b = tmp;
	}
	printf("1000이하의 값을 값는 피보나치 수열의 개수는 %d개\n", cnt + 2);	
	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("작성자 : 최주영/2017E7043\n");
	return 0;
}
  • 순서도

  • 출력결과


✅4번 문제

  • 문제 : 4개의 정수를 입력 받아서 크기 순서대로 출력하는 프로그램을 작성

  • 소스코드

int main(void)
{
	int a, b, c, d, x;
	printf("4번문제 : 4개의 정수를 입력 받아서 크기 순서대로 출력하는 프로그램을 작성하시오\n");
	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("4개의 정수를 입력하시오 ");
	scanf_s("%d %d %d %d", &a, &b, &c, &d);
	while (!((a >= b) && (b >= c) && (c >= d)))
	{
		while (a < b) { x = a; a = b; b = x; }
		while (b < c) { x = b; b = c; c = x; }
		while (c < d) { x = c; c = d; d = x; }
	}
	
	if (a == b)
	{
		if (a == c)
		{
			if (a == d)
			{
				printf("%d = %d = %d = %d\n", a, b, c, d);
			}
			else
			{
				printf("%d = %d = %d > %d\n", a, b, c, d);
			}
		}
		else
		{
			printf("%d = %d > %d > %d\n", a, b, c, d);
		}
	}
	else if (b == c)
	{
		if (b == d)
		{
			printf("%d > %d = %d = %d\n", a, b, c, d);
		}
		else
		{
			printf("%d > %d = %d > %d\n", a, b, c, d);
		}
	}
	else if(c == d)
	{
		printf("%d > %d > %d = %d\n", a, b, c, d);
	}
	else
	{
		printf("%d > %d > %d > %d\n", a, b, c, d);
	}

	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("작성자 : 최주영/2017E7043\n");
	return 0;
}
  • 순서도
  • 출력결과

✅5번 문제

  • 문제 : 아래와 같은 3행 3열로 구구단을 출력하는 프로그램을 작성
  • 소스코드
#include <stdio.h>
int main(void)
{
	int i, j, k;

	printf("5번문제 : 아래와 같은 3행 3열로 구구단을 출력하는 프로그램을 작성하시오.\n");
	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

		for (i = 9; i >= 7; i--)
		{
			for (j = 1; j <= 9; j++)
			{
				for (k = i; k >= 1; k=k-3)
				{
					printf("%-2d * %-2d = %2d      ", k, j, k * j);
				}
				printf("\n");
			}
			printf("================================================");
			printf("\n");
		}

	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("작성자 : 최주영/2017E7043\n");
	return 0;
}
  • 순서도
  • 출력 결과

✅5번 문제

  • 문제 : 아래 표와 같이 출력
  • 소스코드
#include <stdio.h>
int main(void)         // 6번 (홀수번 1번 문제)
{
	int i, j;
	int k;
	int l = 1;

	printf("6,7,8번문제 : 아래와 같은 표를 출력하는 프로그램을 작성하시오.(본인학번 끝자리수가 홀수면 홀수 번째 것들을 짝수면 짝수번째 것들을 해결하시오)\n");
	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

	for (i = 1; i <= 4; i++)
	{
		for (j = i - 1; j > 0; j--)
		{
			printf(" ");
		}
		for (j = i; j <= i; j++)
		{
			printf("%d", i);
		}
	
		for (j = 7-(i*2); j >= 1; j--)
		{
			printf(" ");
		}
		for (j = i; (j <= i && j <=4 && j!=4); j++)
		{
			printf("%d", i);
		}
         printf("\n");
	}

	for (i = 5; i <= 7; i++)
	{
		for (j = 7; j >= i+1; j--)
		{
			printf(" ");
		}
		for (j = 1; j <= 2; j++)
		{
			if (j == 2)
			{
				for (k = 1; k <= l-1; k++)
				{
					printf(" ");
				}
			}
			printf("%d", i);
			l = l + 1;
		}
		printf("\n");
	}

	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("작성자 : 최주영/2017E7043\n");
	return 0;
}  
  • 순서도
  • 출력결과

✅6번 문제

  • 문제 : 아래 표와 같이 출력
  • 소스코드
#include <stdio.h>

	int main()  // 7번 (홀수번 3번문제)
	{
		int count = 2;
		int count2 = 7;

		int i, j,k,p;
		printf("6,7,8번문제 : 아래와 같은 표를 출력하는 프로그램을 작성하시오.(본인학번 끝자리수가 홀수면 홀수 번째 것들을 짝수면 짝수번째 것들을 해결하시오)\n");
		printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

			for (k = 0; k < 4; k++) {
				for (i = 1; i < count; i++)
					printf("%d", i);
				for (j = i; j < count2; j++)
					printf(" ");
				for (p = j; p < 8; p++)
					printf("%d", p);
				count++;
				count2--;
				printf("\n");
			}

			count = 3;
			count2 = 4;

			for (k = 0; k < 3; k++)
			{
				for (i = 1; i <= count; i++)
				{
					printf("%d",i);
				}
				for (j =i; j<= count2; j++)
				{
					printf(" ");
				}
				for (p = j; p < 8; p++)
				{
					printf("%d", p);
				}
	
				count2++;
				count--;
				printf("\n");
			}

	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("작성자 : 최주영/2017E7043\n");
	return 0;
}
  • 순서도
  • 출력결과

    ✅7번 문제
  • 문제 : 아래 표와 같이 출력
  • 소스 코드
#include <stdio.h>

	int main()  // 8번 (홀수번 5번문제)
	{
		int i, j, k, m;
		int num = 5;
		printf("6,7,8번문제 : 아래와 같은 표를 출력하는 프로그램을 작성하시오.(본인학번 끝자리수가 홀수면 홀수 번째 것들을 짝수면 짝수번째 것들을 해결하시오)\n");
		printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

		for (i = 1; i <= 4; i++)
		{
			for (k = 4 - i; k >= 1; k--)
			{
				printf(" ");
			}
			for (j = 1; j <= 2 * (i - 1) + 1; j++)
			{
				printf("%d", i);
			}
			printf("\n");
		}


		for (i = 1; i <= 3; i++)
		{
			for (k = 1; k <= i; k++)
			{
				printf(" ");
			}

			for (j = 5 - ((i - 1) * 2); j >= 1; j--)
			{
				printf("%d", num);
			}
			printf("\n");
			num = num + 1;
		}

	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("작성자 : 최주영/2017E7043\n");
	return 0;
}
  • 순서도
  • 출력결과

✅8번 문제

  • 소스코드
#include <stdio.h> // 9번문제

int main()
{
	int i, j;
	int count0 = 0;
	int count1 = 0;
	int count2 = 0;
	int count3 = 0;
	int count4 = 0;
	int count5 = 0;
	int count6 = 0;
	int count7 = 0;
	int count8 = 0;
	int count9 = 0;
	int cnt = -1;
	int cnt1 = -1;
	int cnt2 = -1;
	int cnt3 = -1;
	int cnt4 = -1;
	printf("0 부터 12345 사이의 정수에서 사용한 숫자는 각각 몇 개인가 ?\n");
	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");


	for (i = 0; i <= 12345; i++)
	{
		if (i < 10)
		{
			cnt = i % 10;
		}
		else if (i >= 10 && i < 100)
		{
			cnt1 = i / 10;
			cnt = i % 10;
		}
		else if (i >= 100 && i < 1000)
		{
			cnt2 = i / 100;
			j = i % 100;
			cnt1 = j / 10;
			cnt = j % 10;
		}
		else if (i >= 1000 && i < 10000)
		{
			cnt3 = i / 1000;
			j = i % 1000;
			cnt2 = j / 100;
			j = i % 100;
			cnt1 = j / 10;
			cnt = j % 10;
		}
		else
		{
			cnt4 = i / 10000;
			j = i % 10000;
			cnt3 = j / 1000;
			j = j % 1000;
			cnt2 = j / 100;
			j = j % 100;
			cnt1 = j / 10;
			cnt = j % 10;
		}

		switch (cnt)
		{
		case 0:
			count0 = count0 + 1;
			break;
		case 1:
			count1 = count1 + 1;
			break;
		case 2:
			count2 = count2 + 1;
			break;
		case 3:
			count3 = count3 + 1;
			break;
		case 4:
			count4 = count4 + 1;
			break;
		case 5:
			count5 = count5 + 1;
			break;
		case 6:
			count6 = count6 + 1;
			break;
		case 7:
			count7 = count7 + 1;
			break;
		case 8:
			count8 = count8 + 1;
			break;
		case 9:
			count9 = count9 + 1;
			break;
		default:
			break;
		}

		switch (cnt1)
		{
		case 0:
			count0 = count0 + 1;
			break;
		case 1:
			count1 = count1 + 1;
			break;
		case 2:
			count2 = count2 + 1;
			break;
		case 3:
			count3 = count3 + 1;
			break;
		case 4:
			count4 = count4 + 1;
			break;
		case 5:
			count5 = count5 + 1;
			break;
		case 6:
			count6 = count6 + 1;
			break;
		case 7:
			count7 = count7 + 1;
			break;
		case 8:
			count8 = count8 + 1;
			break;
		case 9:
			count9 = count9 + 1;
			break;
		default:
			break;
		}

		switch (cnt2)
		{
		case 0:
			count0 = count0 + 1;
			break;
		case 1:
			count1 = count1 + 1;
			break;
		case 2:
			count2 = count2 + 1;
			break;
		case 3:
			count3 = count3 + 1;
			break;
		case 4:
			count4 = count4 + 1;
			break;
		case 5:
			count5 = count5 + 1;
			break;
		case 6:
			count6 = count6 + 1;
			break;
		case 7:
			count7 = count7 + 1;
			break;
		case 8:
			count8 = count8 + 1;
			break;
		case 9:
			count9 = count9 + 1;
			break;
		default:
			break;
		}

		switch (cnt3)
		{
		case 0:
			count0 = count0 + 1;
			break;
		case 1:
			count1 = count1 + 1;
			break;
		case 2:
			count2 = count2 + 1;
			break;
		case 3:
			count3 = count3 + 1;
			break;
		case 4:
			count4 = count4 + 1;
			break;
		case 5:
			count5 = count5 + 1;
			break;
		case 6:
			count6 = count6 + 1;
			break;
		case 7:
			count7 = count7 + 1;
			break;
		case 8:
			count8 = count8 + 1;
			break;
		case 9:
			count9 = count9 + 1;
			break;
		default:
			break;
		}

		switch (cnt4)
		{
		case 0:
			count0 = count0 + 1;
			break;
		case 1:
			count1 = count1 + 1;
			break;
		case 2:
			count2 = count2 + 1;
			break;
		case 3:
			count3 = count3 + 1;
			break;
		case 4:
			count4 = count4 + 1;
			break;
		case 5:
			count5 = count5 + 1;
			break;
		case 6:
			count6 = count6 + 1;
			break;
		case 7:
			count7 = count7 + 1;
			break;
		case 8:
			count8 = count8 + 1;
			break;
		case 9:
			count9 = count9 + 1;
			break;
		default:
			break;
		}
	}

	printf("숫자 = ( 0 ) ( 1 ) ( 2 ) ( 3 ) ( 4 ) ( 5 ) ( 6 ) ( 7 ) ( 8 ) ( 9 )\n");
	printf("개수 = %d  %d  %d  %d  %d  %d  %d  %d  %d  %d\n", count0, count1, count2, count3, count4, count5, count6, count7, count8, count9);
	printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("작성자 : 최주영/2017E7043\n");
	return 0;
}
  • 순서도
  • 출력 결과
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글