0단계 따라하기
??

[기본과정, 1단계]




1. 두 수 입력 후 큰 수 구하기


따라하기(1)

#include<stdio.h>

int main()

{

        return 0

}

설명: 가장 기본적인 프로그램입니다. 반드시 오류를 찾아서 고치고 실행하시기바랍니다.


따라하기(2)

#include<stdio.h>

int main()

{

        scanf("%d %d",&a,&b);   //설명:키보드로 부터 입력받은 수를 각각 a, b 변수에 기억시킵니다.


        printf("%d %d",a,b);   //설명: a와 b 변수에 있는 값을 화면을 통해 출력합니다.


        return 0;

}

설명: 이제 두 수를 입력받아 변수 a와b에 잘 입력되었는지 확인합니다.


따라하기(3)

#include<stdio.h>

int main()

{

        int a,b,t;

        

        scanf("%d %d",&a, b);

        if(a>b)t=a;  //설명: if()문에 참이면 a변수값을 t변수값에 복사합니다.

        else t=b;   //설명: if()문에 거짓일 경우 b변수값을 t변수값에 복사합니다.

        printf("%d",t);  //설명: t변수값을 출력합니다.


        return 0;

}


//설명: if()문을 이용하여 큰수를 t변수에 입력합니다.

//오류발견하고 수정해서 입력하세요!

따라하기 (4)

#include<stdio.h>

int main()

{

        int a,b,t;

        

        scanf("%d %d",&a,&b);

        if(a>b)t=a; else t=b; //설명: 위 프로그램을 한줄로 이어붙이기 하였습니다.

        printf("%d",t);

        printf("\n");


        return 0;

}

//설명: 좀 다른 방법으로 표현하여 보보니다.


따라하기 (5)

#include<stdio.h>

int main()

{

        int a,b;


        scanf("%d %d",&a,&b);

        if(a>b)b=a;  //설명: if()문이 참이면 a의값을 b의 값으로 복사합니다.

        printf("%d",b);

        printf("\n");


        return 0;

}

//설명: t변수를 사용하지않고도 큰수를 구할 수 있는 방법입니다.


따라하기 (6)

#include<stdio.h>

int main()

{


        int a,b,t;


        scanf("%d %d", &a, &b);

        if(t<a)t=a;  //설명: t변수값과 비교하여 a의 값을 t의 변수에 복사합니다.

        if(t<b)t=b;

        printf("%d", t);

        printf("\n");

        return 0;

}

설명: 위프로그램들과 좀 다르게 생각해 봅니다. 하지만 결과는 똑같습니다.

모든 경우의 방법으로 이해하고 있어야 합니다.

많은 학생들이 한가지 방법만 외우거나 고집하는 것은 컴퓨팅사고력을 만들 수 없습니다.





2. 세 수 입력 후 큰 수구하기


따라하기 (1)

#include<stdio.h>

int main()

{

        int a,b,c,t;


        scanf("%d %d %d", &a, &b, &c);

        if(t<a)t=a;

        if(t<b)t=b;

        if(t<c)t=c;

        printf("%d", t);

        printf("\n");


        return 0;

}

설명: 두수입력과 비슷합니다.  


따라하기(2)

#include<stdio.h>

int main()

{

        int a,b,c;


        scanf("%d %d %d", &a, &b, &c);

        if(a>b)b=a;

        if(b>c)c=b;

        printf("%d", b);

        printf("\n");


        return 0;

}

설명: 차이점이 이해가 됩니까?

여러가지 경우의 수로 입력하고 잘못된 부분을 수정하세요!





3. 최댓값 & 최솟값


따라하기(1)

#include<stdio.h>

int main()

{

        int n, i, a, t=0;


        scanf("%d", &n);

        for(i=1; i<=n; i++){

                scanf("%d", &a);

                if(t<a) t=a;

        }

        printf("%d\n",t);


        return 0;


}

설명: n개의 data를 입력받아 가장 큰수를 구하는 프로그램입니다.


따라하기(2)

#include<stdio.h>

int d[1004];

int main()

{


        int n, i, a, m=0;


        scanf("%d", &n);

        for(i=1; i<=n; i++){ //i값을 1로 초기화시키고 i<=n 조건을 만족할동안 i값을 1씩 증가시키면서

                scanf("%d", &d[i]);

        }                   // 반복한다.


        for(i=1; i<=n; i++){

                if(m<d[i]) m=d[i];  //m값과 비교하면서 반복한다.

        }

        printf("%d\n", m);


        return 0;

}

설명: 배열을 이용하여 가장 큰 수를 구할 수 있습니다.


따라하기(3) 

#include<stdio.h>

int main()

{

        int n, i, a, m=0;

        

        scanf("%d", &n);

        scanf("%d", &a);

        m=a;


        for(i=2; i<=n; i++){

                scanf("%d", &a);

                if(m<a) m=a;

        }

        printf("%d\n", a);

        return 0;

}

설명: 첫번째 data를 무조건 m이라는 변수에 초기화시킵니다.


따라하기(4)

#include<stdio.h>

int main()

{

        int n, i, a, m=0;

        

        scanf("%d", &n);

        scanf("%d", &m);

        printf("%d, %d, %d\n", i, a, m);

        for(i=2; i<=n; i++){

                scanf("%d", &a);

                if(m>a) m=a;

                printf("%d,%d,%d\n", i, a, m);

        }

        printf("%d\n", m);


        return 0;

}

설명:  각 프로그램의 차이점을 꼼꼼히 분석하고 오류를 찾아서 학습해야합니다.

모두 이해가 되었다면 컴퓨팅사고력 1단계를 통과하셨습니다.





4. 짝수 & 홀수

 

#include<stdio.h>

 

int main()

{

        int 

         

        scanf("%d", &a);

        if(a%2==0) printf("짝수\n");

        else printf("홀 수\n");

         

        return 0;

}

 

설명: 간단하지만 매우 중요합니다. 

 




5. 몫 과 나머지

 

#include<stdio.h>

 

int main()

{

        int a, b, mk, na;

         

        scanf("%d %d", &a, &b);

        mk= a/b;

        na= a%b;

        printf("%d %d\n", mk, na);

         

        return 0;

}

 

설명: 모든 프로그램을 안보고  코딩할 때 다음 단계로 넘어가야 합니다.

 

 





6. 개수 구하기

 

#include<stdio.h>

 

int main()

{

        int a, c=0;

         

dasi:

        scanf("%d", &a);

        c=c+1;

        if(a != 0) goto dasi;

        printf("%d\n",c);

         

        return 0;

}

 

설명: 이 프로그램은 goto문을 사용하지않고 for문을 이용하여 다시 작성할 수 있어야 합니다. 

 




7. 누적 합 구하기

 

#include<stdio.h>

 

int main()

{

        int a, c=0, s=0;

         

dasi:

        scanf("%d", &a);

        c=c+1;

        s=s+a;

        if(a != 0) goto dasi;

        printf("%d %d\n", c, s);

         

        return 0;

}

 

설명: 이 프로그램은 goto문을 사용하지말고 while()문으로 바꿔서 다시 작성할 수 있어야 합니다. 

 

  




 8. 약수


#include<stdio.h>

int main()

{

        int i, n;   //----------------------------(1)

         

        scanf("%d", &n);    //--------------------(2)

        for(i=1; i<=n; i++){     //-----------------(3)

                if(n%i==0)printf("%d ",i);   //--------(4)

        }     //-------------------------------(5)

         

        return 0;  //---------------------------(6)

}

 

 실행

 n

 i

 (1) int i, n;  변수 선언

 

 

 (2) scanf("%d", &n); n=8 라고 가정하면

 8

 

 (3) i=1 초기화

 8

 1

 (4) if(n%i==0)printf("%d ",i); 

 8

 1 출력

 (5) 반복 -> (3)이동

 

 

 (3) i++; i=2로 증가

 8

 2

 (4) 조건만족

 8

 2 출력

 (3) i=3으로 증가, (4)조건 거짓

 8

 

 (4) if(n%i==0)printf("%d ",i); 

 

 3 출력 안함

 (5) 반복

 

 

 (3) i=4로 증가

 8

 

 (4) if(n%i==0)printf("%d ",i); 

 8

 4 출력

 i=5,6,7로 증가

 

 5,6,7출력안함

 (3) i=8로 증가

 8

 8

 (4) 조건만족, i=9증가 후 반복 중단

 8

 8 출력

 (6) return 0;  종료

 

 

 

 

설명: 약수의 원리를 이용하여 분석합니다.

그래도 모르면 동영상을 참고하세요!

   





9. 배수

 

따라하기 (1)

#include<stdio.h>

int main()

{

        int i, n;

         

        scanf("%d", &n);

        for(i=1; i<=100; i++){

                if(i%n==0)printf("%d ",i);  // 설명: 조건을 만족할 경우만 출력

        }

         

        return 0;

}

 

따라하기 (2)

#include<stdio.h>

int main()

{

        int i, n;

         

        scanf("%d", &n);  //설명: n=3이라면

        for(i=1; i<=100/n; i++){   //설명: 1~100/3 반복 (1~100까지 수중 배수구하기)

                printf("%d ",n*i);  //3,6,9,12,15,18,21,24,27, ....... 출력

        }

         

        return 0;

}

 

// 설명: 배수를 더 빠르게 구할 수 있는 방법입니다.

 


따라하기 (3)

#include<stdio.h>

 

int main()

{

        int i, n;

         

        scanf("%d", &n);

        for(i=n; i<=100; i+=n) printf("%d ", i);

         

        return 0;

}

 

설명: 긱 프로그램들의 차이점이 보이나요? 결과는 같지만 실행시간 차이가 있습니다. 

 




10. 소수 판별하기

 

#include<stdio.h>

 

int main()

{

        int i, n, f;

         

        scanf("%d", &n);

        f=0;

        for(i=2; i<=n-1; i++){

                if(n%i==0) f=1;

        }

        if(f==0)printf("소수이다.\n");

        else printf("소수가 아니다.\n");

         

        return 0;

}

 

설명: 약수구하기를 응요하여 소수판별을 구할 수 있습니다.

 

2단계가 모두 이해가 되었다면 컴퓨팅사고력 2단계를 통과하셨습니다.

 

10번이상 반독복해서 충분히 이해하고 표현해야 합니다.





11.소인수분해

 

따라하기 (1)

#include<stdio.h>

 

int main()

{

        int a, k;

        scanf("%d", &a); // --------(1)

        k=2;  //------------------(2)

         

dasi:  //------------------------(3)

        if(a%k!=0){   //------------(4)

                k=k+1;   //---------(5)

                goto dasi;  //--------(6)

        }  //---------------------(7)

        printf("%d ", k);   //---------(8)

        a = a/k;        //------------(9)

        if(a!=1)goto dasi;   //-------(10)

        printf("\n");    //-----------(11)

         

        return 0;    //--------------(12)

}

 

//분석: 만약엑 a=6라 하면

 실행번호

 a

 k

 (1)scanf("%d", &a);

 6

 

 (2)k=2;

 6

 2

 (3)dasi:  <- 문번호

 

 

 (4) 6%2==0임으로 조건이 거짓임으로 (8) 이동

만약에 조건이 참이면 (5)이동

 

 

 (8)printf("%d ", k); 

 6

 2 (출력)

 (9) a = a/k; 

 3

 

 (10) 조건이 참이면 (3)이동

거짓이면 (11)이동

 3

 

 (3) <-문번호

 

 

 (4) 3%2==1임으로 조건 참

 3

 

 (5)k=k+1;  

 3

 3

 (6) (3)이동

 3

 3

 (3) <-문번호

 3

 3

 (4) 조건이 거짓

 

 

 (8)printf("%d ", k);

 3

 3(출력)

 (9)

 1

 

 (10) 조건이 거짓임으로 (11)이동

 

 

 (11) <-개행문자

 

 

 (12) return 0; 종료

 

 

 

 

 

 

//설명: goto문을 이용해서 이해를 합니다.

// 반드시 임의의 수로 실험하면서 이해하기 바랍니다.

 

 

따라하기 (2)

#include<stdio.h>

 

int main()

{

        int a, k;

        scanf("%d", &a);

        k=2;

         

        while(1){

                while(a%k!=0) k=k+1;

                printf("%d ", k);

                a = a/k;

                if(a==1) break;

        }

        printf("\n");

        return 0;

}

 

설명: goto문과 while()문의 차이를 이해하세요! 그리고 항상 틀린 프로그램을 고쳐서 실행하세요! 

  

 




12. 2진수 구하기

 

따라하기 (1)

#include<stdio.h>

  

int d[1004];   //---------------(1)

int main()

{

        int n, mk, na, c=0, i;   //-----(2)

        scanf("%d",&n);   //---------(3)

        while(1){         //----------(4)

                mk=n/2;   //----------(5)

                na=n%2;   //----------(6)

                c++; d[c]=na;   //-----(7)

                n=mk;   //------------(8)

                if(n==0) break;  //-----(9)

        }   //----------------------(10)

        for(i=c; i>=1; i--) printf("%d",d[i]);  //---(11)

        return 0;  //------------------(12)

}  //-------------------------------(13)

 

 

 실핼

 n

 mk

 na

 c

 i

 배열

 (1) 배열 선언

 

 

 

 

 

 

 (2) 변수 선언

 

 

 

 0

 

 

 (3) n = 6라고 가정하면

 6

 

 

 

 

 

 (4) 무조건 반복

 6

 

 

 

 

 

 (5) mk=n/2;

 6

 3

 

 

 

 

 (6) na=n%2;

 6

 3

 0

 

 

 

 (7) c++; d[c]=na;

 6

 3

 0

 1

 

d[1]=0,

 (8) n=mk;

 3

 

 

 

 

 

 (9) 조건이 만족하면 while()탈출

조건이 거짓이면 while() (4)반복

 3

 

 

 

 

 

 (5)

 3

 1

 

 

 

 

 (6)

 3

 1

 1

 

 

 

 (7)

 3

 1

 1

 2

 

 d[1]=0, d[2]=1,

 (8) n=mk;

 1

 

 

 

 

 

 (9) 조건이 거짓임으로 계속 반복

 

 

 

 

 

 

 (5), (6), (7)

 1

 0

 1

 3

 

 d[1]=0, d[2]=1, d[3]=1

 (8)

 0

 

 

 

 

 

 (9) if(n==0) break; 조건이 만족하면 (11)이동

 

 

 

 

 

 

 (11) 출력(배열을 역순으로)

 

 

 

 

 

  1 1 0 출력

 (12) return 0; 종료

 

 

 

 

 

 

 

// 설명: 배열에 기억시키면서 반복합니다.

// c변수와 d[]배열의 값이 어떻게 기억되는지 분석하면서 학습합니다.

따라하기 (2)

#include<stdio.h>

 

int d[1004];

int main()

{

        int n, c=0, i;

        scanf("%d",&n);

        while(n!=0){

                c++; d[c]=n%2;

                n=n/2;

        }

        for(i=c; i>=1; i--) printf("%d",d[i]);

        return 0;

}



Number of visitors today: 70707

??

Copyrigh(c) wiener2020.cafe24.com, All rights reserved