x값 하나에 y값이 하나다! => 함수
일반적으로: 괄호가 있는거
#include <stdio.h>
int main(){
printf("potemkin buster");
}
여기에서는
main() : 프로그램 시작함수
printf() : stdio.h library에서 기본으로 제공하는 함수가 있다
#include <stdio.h>
int no(int a){
printf("%d\n",a);
printf("no");
}
int main(){
printf("potemkin buster\n");
no(1);
}
반환명
함수명
매개변수
int a : 매개변수 no(1) : 인자
자기자신을 호출한다
int g(int k){
if(k >= n) return 0;
g(k-1);
printf("*");
}
요런 느낌으로 함수가 함수안에서 자신을을 호출한다
(간략하게 이번 과제에 쓰는 부분만 찾아보았다)
void: 함수를 만들때 int 말고 쓸 수 있는 것 중 하나이다
이것은 값을 반환하지 않기에 return 뒤에 값을 입력하지 못한다.
많이 써보지 않아서 모르겠지만 int보다 쓰기 편리할때가 있는 것 같다. ex) 별찍기
배열에서 가장 큰 값이 처음 나타나는 위치를 출력하시오.
배열 입력횟수를 받아와 입력을 반복하고열 입력횟수를 받아와 입력을 반복해 배열을 받는다. 함수를 만들고 작성에 필요한 배열값 저장용 변수와 배열주소 저장용 변수를 만들고 반복문으로 배열에서 자기자신보다 큰 수를 저장하는 코드를 짠다. 자신보다 큰 수를 저장하는 로직을 만든다. 반복 종료후 주소에 1을 추가해서 반환한다. (음수인 입력값도 있으니 big는 적당히 작은 -10000으로 했다)
#include <stdio.h>
int n, d[110];
int f(){
int big =-10000;
int bigl =0;
for(int i=0;i<n;i++){
if(d[i]>big){
big = d[i];
bigl = i;
}
}
return bigl+1;
}
int main()
{
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d", &d[i]);
}
printf("%d", f());
return 0;
}
실수(real number)를 입력 받아 소수 부분만 출력하시오.
실수를 받아와서 받아온 실수를 길고 긴 정수(long long int)로 바꿔서 원래 수에서 뺀다.
#include <stdio.h>
double x;
double f(double t)
{
return x-(long long int)t;
}
int main()
{
scanf("%lf", &x);
printf("%.14lf\n", f(x));
}
한 정수 n을 입력받아 n층의 별 삼각형을 출력하시오.
(단, 반복문은 사용할 수 없다.)
이 사람은 void가 뭔지 몰라서 전부 int로 바꾸고 return 뒤에 0을 붙였느니
능지에 감탄한다.
#include <stdio.h>
int n;
int g(int k)
{
if(k <= 0) return 0;
g(k-1);
printf("*");
}
int f(int k)
{
if(k <= 0) return 0;
f(k-1);
g(k);
printf("\n");
}
int main()
{
scanf("%d", &n);
f(n);
}
길이 n이 입력되면 역삼각형을 출력한다.
바로 전 문제와 같다 f(k-1)를 나중에 호출하도록 적당히 위치를 바꿔주니 출력이 문제없이 나온다
(이번에는 검색을 조금 하고 온 모양이다)
#include <stdio.h>
int n;
void g(int k){
if(k <= 0) return;
g(k-1);
printf("*");
}
void f(int k){
if(k <= 0) return;
g(k);
printf("\n");
f(k-1);
}
int main(){
scanf("%d", &n);
f(n);
}
n이 입력되면
n!의 값을 출력하시오.
#include <stdio.h>
int f(int k){
if(k <= 1) return 1;
return k * f(k-1);
}
int main(){
int n;
scanf("%d", &n);
printf("%d",f(n));
return 0;
}
어떤 10진수 n이 주어지면
2진수로 변환해서 출력하시오.
예)
10 -----> 1010
0 -----> 0
1 -----> 1
2 -----> 10
1024 -----> 10000000000
#include <stdio.h>
int a;
void f(int k){
if(k == 1){
printf("%d",1);
return;
}else if(k == 0){
printf("%d",0);
return;
}else{
f(k/2);
printf("%d",k%2);
}
}
int main(){
scanf("%d",&a);
f(a);
}
