본문 바로가기
ProgrammingLanguage/C언어

C언어 | 반복문 예제, 구구단, 합 구하기, n! 구하기, 약수 출력, 패턴 출력

by 씽쌩쏭 2021. 2. 14.
728x90

✅ 문제 : 반복문

 

  • 1~10까지 출력하기
  • 구구단 출력하기
  • 1~10까지의 합 구하기
  • n! 구하기(overflow 발생지점 파악)
  • 약수 출력하기
  • 패턴 출력

 

바로 코드부터...( •̀ ω •́ )✧

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

//1~10까지 출력하는 함수
void print_1_10(int i) {
	for (i = 1; i < 11; i++) {
		printf("%d ", i);
	}
	printf("\n");
}

//구구단 출력하는 함수
void multi(int a, int i) {
	printf("구구단을 출력합니다. \n출력할 단 : ");
	scanf("%d", &a);

	printf("----%d단----\n", a);
	for (i = 1; i < 10; i++)
		printf("%d X %d = %d\n", a, i, a * i);
}

//1~10까지의 합 구하는 함수
void sum_cal(int i, int sum) {
	printf("1~10까지의 합을 출력합니다.\n");
	for (i = 1; i <= 10; i++) sum += i;
	printf("%d\n", sum);
}

// n! 구하는 함수
void factorial(int i, int n) {
	printf("n!의 값을 구합니다.");
	int a = 1;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
		a *= i;

	printf("%d!=%d\n", n, a);
}

//약수 구하는 함수
void aliquot(int i , int n) {
	printf("약수를 구합니다.\n");
	for (n = 1; n <= 10; n++)
	{
		printf("%d의 약수는 ", n);
		for (i = 1; i <= n; i++)
		{
			if (n % i == 0)
				printf("%d ", i);
		}
		printf("\n");
	}
}

//직각삼각형1 출력하는 함수
void tri_1(int i, int j) {
	// i=줄, j=별
	printf("직각 삼각형을 출력합니다.\n단 : 5\n");
	for (i = 1; i <= 5; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("*");

		}
		printf("\n");
	}
}

//직각삼각형2 출력하는 함수
void tri_2(int i, int j) {
	printf("직각 삼각형을 출력합니다.\n단 : 10\n");
	// i=줄, j=별
	for (i = 1; i <= 10; i++) {
		for (j = 10; j >= i; j--)
		{
			printf(" ");
		}
		for (j = 1; j <= i; j++)
		{
			printf("*");
		}
		printf("\n");
	}
}


//직각삼각형3 출력하는 함수
void tri_3(int i, int j) {
	printf("직각 삼각형을 출력합니다. \n단 : 10\n");
	// i=줄, j=별
	for (i = 10; i >= 1; i--)
	{
		for (j = 1; j <= 10 - i; j++)
			printf(" ");
		for (j = 1; j <= i; j++)
			printf("*");
		printf("\n");
	}
}


//직각삼각형4 출력하는 함수
void tri_4(int i, int j) {
	printf("직각 삼각형을 출력합니다. \n단 : 10\n");
	// i=줄, j=별
	for (i = 1; i <= 10; i++)
	{
		for (j = 1; j <= 10 - i; j++)
			printf("*");
		printf("\n");
	}
}

//피라미드 출력하는 함수
void pyramid(int i, int j) {
	printf("피라미드를 출력합니다. \n단 : 10\n");
	// i=줄, j=별
	for (i = 1; i <= 10; i++)
	{
		for (j = 1; j <= 10 - i; j++)
			printf(" ");
		for (j = 1; j <= 2 * i - 1; j++)
			printf("*");
		printf("\n");
	}
}


int main() {

	int a = 0, i = 0, sum = 0, n = 0, j = 0;

	//1~10까지 출력하기
	print_1_10(i);

	//구구단 출력하기
	multi(a, i);

	// 1~10까지의 합 구하기
	sum_cal(i, sum);
	
	// n! 구하기 (overflow 발생시점 파악)
	factorial(i, n);

	// 약수 출력하기
	aliquot(i, n);

	//패턴 출력
	//직각삼각형 출력1
	tri_1(i, j);


	//직각삼각형 출력2
	tri_2(i, j);


	//직각삼각형 출력3
	tri_3(i, j);


	//직각삼각형 출력4
	tri_4(i , j);


	//피라미드 출력
	pyramid(i, j);
	
	return 0;
	}

 

따로 솔루션 파일들 만들기 귀찮아서 하나의 솔루션에 함수로 표현해 봄!

 

int형으로 리턴 값 받아서 main에서 다시 출력하고 이 과정이...너무 귀찮아서 싹 다 생략하고 void로 출력까지 다 되게 만들어버림

잘 돌아간다...

 

 

지금 출력 값들 확인해보니...

직각 삼각형 만들 때...

단 개수가 부족한 게 있고 막 공백이 생겨있음

 

그리고 문제에서 의도하는 게 단을 입력 받아 출력하는 것인 듯 해서

그 기능도 추가함!

 

수정수정...

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

//1~10까지 출력하는 함수
void print_1_10(int i) {
	for (i = 1; i < 11; i++) {
		printf("%d ", i);
	}
	printf("\n");
}

//구구단 출력하는 함수
void multi(int a, int i) {
	printf("구구단을 출력합니다. \n출력할 단 : ");
	scanf("%d", &a);

	printf("----%d단----\n", a);
	for (i = 1; i < 10; i++)
		printf("%d X %d = %d\n", a, i, a * i);
}

//1~10까지의 합 구하는 함수
void sum_cal(int i, int sum) {
	printf("1~10까지의 합을 출력합니다.\n");
	for (i = 1; i <= 10; i++) sum += i;
	printf("%d\n", sum);
}

// n! 구하는 함수
void factorial(int i, int n) {
	printf("n!의 값을 구합니다.");
	int a = 1;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
		a *= i;

	printf("%d!=%d\n", n, a);
}

//약수 구하는 함수
void aliquot(int i , int n) {
	printf("약수를 구합니다.\n");
	for (n = 1; n <= 10; n++)
	{
		printf("%d의 약수는 ", n);
		for (i = 1; i <= n; i++)
		{
			if (n % i == 0)
				printf("%d ", i);
		}
		printf("\n");
	}
}

//직각삼각형1 출력하는 함수
void tri_1(int i, int j, int n) {
	// i=줄, j=별, n=단
	printf("직각 삼각형을 출력합니다.\n단 : ");
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("*");

		}
		printf("\n");
	}
}

//직각삼각형2 출력하는 함수
void tri_2(int i, int j, int n) {
	printf("직각 삼각형을 출력합니다.\n단 : ");
	scanf("%d", &n);
	// i=줄, j=별, n=단
	for (i = 1; i <= 10; i++) {
		for (j = 9; j >= i; j--)
		{
			printf(" ");
		}
		for (j = 1; j <= i; j++)
		{
			printf("*");
		}
		printf("\n");
	}
}


//직각삼각형3 출력하는 함수
void tri_3(int i, int j, int n) {
	printf("직각 삼각형을 출력합니다. \n단 : ");
	scanf("%d", &n);
	// i=줄, j=별, n=단
	for (i = n; i >= 1; i--)
	{
		for (j = 0; j < n - i; j++)
			printf(" ");
		for (j = 1; j <= i; j++)
			printf("*");
		printf("\n");
	}
}


//직각삼각형4 출력하는 함수
void tri_4(int i, int j, int n) {
	printf("직각 삼각형을 출력합니다. \n단 : ");
	scanf("%d", &n);
	// i=줄, j=별, n=단
	for (i = 0; i < n; i++)
	{
		for (j = 1; j <= n - i; j++)
			printf("*");
		printf("\n");
	}
}

//피라미드 출력하는 함수
void pyramid(int i, int j, int n) {
	printf("피라미드를 출력합니다. \n단 : ");
	scanf("%d", &n);
	// i=줄, j=별, n=단
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= n - i; j++)
			printf(" ");
		for (j = 1; j <= 2 * i - 1; j++)
			printf("*");
		printf("\n");
	}
}


int main() {

	int a = 0, i = 0, sum = 0, n = 0, j = 0;

	//1~10까지 출력하기
	print_1_10(i);

	//구구단 출력하기
	multi(a, i);

	// 1~10까지의 합 구하기
	sum_cal(i, sum);
	
	// n! 구하기 (overflow 발생시점 파악)
	factorial(i, n);

	// 약수 출력하기
	aliquot(i, n);

	//패턴 출력
	//직각삼각형 출력1
	tri_1(i, j, n);


	//직각삼각형 출력2
	tri_2(i, j, n);


	//직각삼각형 출력3
	tri_3(i, j, n);


	//직각삼각형 출력4
	tri_4(i , j, n);


	//피라미드 출력
	pyramid(i, j, n);
	
	return 0;
	}

 

 

 

수정하는 데 엄청 걸렸다...

역시 별 찍는 건 어렵다

 

이제 삼각형 제대로 나온다...ㅜㅜ

 

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

C언어 | 동적 메모리 할당 예제  (0) 2021.02.16
C언어 | continue문 예제  (0) 2021.02.14
C언어 | if else if 예제  (0) 2021.02.14
C언어 | 무한루프 예제  (0) 2021.02.14
C언어 | 함수 포인터 예제  (0) 2021.02.14