//1 반복문을 사용하지 않고 자신의 이름을 10번 출력하는 프로그램을 작성하시오.
출력 예
홍길동
홍길동
.
.
.
홍길동
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void name(int n)
{
if (n < 1)return;
name(n - 1);
printf("홍길동\n");
}
int main()
{
name(10);
return 0;
}
자가진단 1 20 이하의 자연수 N을 입력받아 재귀함수를 이용해서 "recursive"를 N번 출력하는 프로그램을 작성하시오.
입력 예 3
출력 예
recursive
recursive
recursive
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void print(int n)
{
if (n < 1)return;
print(n - 1);
printf("recursive\n");
}
int main()
{
int a;
scanf("%d", &a);
if (a > 20 || a < 0) return 0;
print(a);
return 0;
}
//2 50 이하의 자연수 N을 입력받아 재귀함수를 이용하여 1부터 N까지의 정수를 차례대로 출력하는 프로그램을 작성하시오.
입력 예 10
출력 예 1 2 3 4 5 6 7 8 9 10
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void num(int n)
{
if (n <= 0) return;
num(n - 1);
printf("%d ", n);
}
int main()
{
int N;
scanf("%d", &N);
num(N);
return 0;
}
자가진단 2 50 이하의 자연수 N을 입력받아 재귀함수를 이용하여 N부터 1까지를 차례대로 출력하는 프로그램을 작성하시오.
입력 예 5
출력 예 5 4 3 2 1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void num(int n)
{
if (n <= 0) return;
printf("%d ", n);
num(n - 1);
}
int main()
{
int N;
scanf("%d", &N);
if (N < 0 ||N > 50) return 0;
num(N);
return 0;
}
//3 12 이하의 자연수 N을 입력받아 재귀함수를 이용하여 N!(팩토리얼)을 구하여 출력하는 프로그램을 작성하시오. (N팩토리얼이란 1부터 N까지의 곱을 말한다. 1 * 2 * 3 … * N)
입력 예 10
출력 예 3628800
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int fac(int n)
{
if (n <= 1) return 1;
return n * fac(n - 1);
}
int main()
{
int N;
scanf("%d", &N);
printf("%d\n", fac(N));
return 0;
}
자가진단 3 100 이하의 자연수 N을 입력받아 재귀함수를 이용하여 1부터 N까지의 합을 구하는 프로그램을 작성하시오.
입력 예 100
출력 예 5050
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int fac(int n)
{
if (n <= 0) return 0;
return n + fac(n - 1);
}
int main()
{
int N;
scanf("%d", &N);
if (N > 100 || N < 1) return 0;
printf("%d\n", fac(N));
return 0;
}
//4 10 이하의 자연수 N을 입력받아 주사위를 N번 던져서 나올 수 있는 모든 경우를 출력하는 프로그램을 작성하시오.
입력 예 3
출력 예
1 1 1
1 1 2
1 1 3
1 1 4
1 1 5
1 1 6
1 2 1
…
6 6 6
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int N, arr[101];
void output()
{
int i;
for (i = 1; i <= N; i++)
{
printf("%d", arr[i]);
}
printf("\n");
}
void dice(int step)
{
int i;
if (step > N)
{
output();
return;
}
for (i = 1; i <= 6; i++)
{
arr[step] = i;
dice(step + 1);
}
}
int main()
{
scanf("%d", &N);
dice(1);
return 0;
}
자가진단 4 10 이하의 자연수 N을 입력받아 주사위를 N번 던져서 나올 수 있는 모든 경우를 출력하되 중복되는 경우에는 앞에서부터 작은 순으로 1개만 출력하는 프로그램을 작성하시오.
입력 예 3
출력 예
1 1 1
1 1 2
...
1 1 6
1 2 2
1 2 3
…
5 6 6
6 6 6
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int N, arr[101];
void output()
{
int i;
for (i = 1; i <= N; i++)
{
printf("%d", arr[i]);
}
printf("\n");
}
void dice(int step)
{
int i;
if (step > N)
{
output();
return;
}
for (i = arr[step - 1]; i <= 6; i++)
{
arr[step] = i;
dice(step + 1);
}
}
int main()
{
scanf("%d", &N);
arr[0] = 1;
dice(1);
return 0;
}
c언어 달팽이 (골뱅이) 문제
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=coding-abc&logNo=221700859477
//5 50 이하의 자연수 N을 입력받아 재귀호출을 이용하여 피보나치 수열에서 N번째 수를 출력하는 프로그램을 작성하시오. 피보나치 수열이란 첫 번째와 두 번째 수는 1이고 세 번째 수부터는 바로 앞 두 수의 합으로 구성된 수열이다. (1 1 2 3 5 8 13 21 ...)
입력 예 7
출력 예 13
(소스1)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int fibo(int n)
{
if (n < 3) return 1;
return fibo(n - 1) + fibo(n - 2);
}
int main()
{
int N;
scanf("%d", &N);
printf("%d\n", fibo(N));
return 0;
}
(소스2)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int arr[100] = { 0,1,1 };
int fibo(int n)
{
if (arr[n] == 0) arr[n] = fibo(n - 1) + fibo(n - 2);
return arr[n];
}
int main()
{
int N;
scanf("%d", &N);
printf("%d\n", fibo(N));
return 0;
}
자가진단 5 첫 번째 수는 1이고 N번째 수는 (N / 2)번째 수와 (N - 1)번째 수의 합으로 구성된 수열이 있다. 50 이하의 자연수 N을 입력받아 재귀호출을 이용하여 이 수열에서 N번째 수를 출력하는 프로그램을 작성하시오. (1 2 3 5 7 10 13 18 ...)
입력 예 8
출력 예 18
(소스1)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int fibo(int n)
{
if (n < 2) return 1;
return fibo(n - 1) + fibo(n / 2);
}
int main()
{
int N;
scanf("%d", &N);
printf("%d\n", fibo(N));
return 0;
}
(소스2)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int arr[50] = { 0, 1, };
int process(int n)
{
if (arr[n] == 0) arr[n] = process(n - 1) + process(n / 2);
return arr[n];
}
int main()
{
int N;
scanf("%d", &N);
if (N < 1 || N > 50) return 0;
printf("%d\n", process(N));
return 0;
}
//6 9자리 이하의 자연수를 입력받아 재귀함수를 이용하여 각 자리 숫자들의 합을 출력하는 프로그램을 작성하시오.
입력 예 123456780
출력 예 36
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int hap(int n)
{
if (n <= 0) return 0;
return hap(n / 10) + (n % 10);
}
int main()
{
int N;
scanf("%d", &N);
printf("%d\n", hap(N));
return 0;
}
자가진단 6 9자리 이하의 자연수를 입력받아 재귀함수를 이용하여 각 자리 숫자의 제곱의 합을 출력하는 프로그램을 작성하시오.
입력 예 12345
출력 예 55
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int hap(int n)
{
if (n == 0) return 0;
return hap(n / 10) + (n % 10) * (n % 10);
}
int main()
{
int N;
scanf("%d", &N);
printf("%d\n", hap(N));
return 0;
}
'Basics > 자기주도 C언어 프로그래밍' 카테고리의 다른 글
[Chapter] 15 문자열 II (0) | 2023.07.14 |
---|---|
[Chapter] 14 문자열 I (0) | 2023.07.14 |
[Chapter] 12 함수 II (0) | 2023.07.14 |
[Chapter] 11 함수 I (0) | 2023.07.14 |
[Chapter] 10 배열 II (0) | 2023.07.14 |