본문 바로가기
프로그램/C언어 1000제

C언어 1제] 1 ~ 10까지 출력하는 프로그램을 작성하시오.

by 건티 2021. 6. 16.
728x90

1. 단순 반복문 사용하기

참고풀이1]

//1~10까지 출력하시오. 
#include <stdio.h>

int main()
{
   int a;

   //1. while()반복문 사용하기
   a=0;
   while(a<10)
   {
      a++;
      printf("%d ",a);
   }
   printf("\n");

   //2. do~while(); 반복문 사용하기
   a=0;
   do{
      ++a;
      printf("%d ",a);
   }while(a<10);
   printf("\n");

   //3. for(;;) 반복문 사용하기
   for(a=1;a<=10;a++) 
      printf("%d ",a);
   printf("\n");

   //4. 1번을 단문으로 만들기
   a=0;
   while(a++<10)
      printf("%d ",a);
   printf("\n");

   //5. 1번을 단문으로 만들기 
   a=0;
   while(++a<=10)
      printf("%d ",a);
   printf("\n");

   //6. 1번을 단문으로 만들기
   a=0;
   while(a<10)
      printf("%d ",++a);
   printf("\n");

   //7. 1번을 단문으로 만들기
   a=1; 
   while(a<=10)
      printf("%d ",a++);
   printf("\n");

   //8. while()를 무한반복문으로 만들기
   a=0;
   while(1)
   {
      if(a++>=10) break;
      printf("%d ",a);
   }
   printf("\n");

   //9. 2번을 단문으로 만들기
   a=0;  
   do{
      printf("%d ",++a);
   }while(a<10);
   printf("\n");

   //10. 2번을 단문으로 만들기
   a=1;
   do{
      printf("%d ",a++);
   }while(a<=10); 
   printf("\n");

   //11. 2번을 단문으로 만들기
   a=1;
   do{
      printf("%d ",a);
   }while(++a<=10);
   printf("\n");

   //12. 2번을 단문으로 만들기
   a=1;
   do{
      printf("%d ",a);
   }while(a++<10);
   printf("\n");

   //13. do~while()를 무한반복문으로 만들기
   a=0;
   do{
      if(++a>10) break;
      printf("%d ",a);
   } while(1);

   return 0;

 

참고풀이1 결과]

 

 

2. 다중반복문 사용하기

참고풀이2]

//이중반복문으로 1~10까지 출력하는 프로그램은
//6*6*2=72가지의 프로그램으로 구현할 수 있다.
//여기서는 18가지만 구현하여 보았다. 
#include <stdio.h>

int main()
{
   int r,c;//반복변수
   int n;//증가값변수 

   //1. while()반복문 사용하기
   n=0;
   r=0;
   while(r++<2)
   {
      c=0;
      while(c++<5)
         printf("%d ",++n);
   }
   printf("\n");

   //2. do~while()반복문 사용하기
   n=0;
   r=0;
   do{
      c=0;
      do{
         printf("%d ",++n);
      }while(++c<5);
   }while(++r<2);
   printf("\n");

   //3. for(;;)반복문 사용하기
   n=0;
   for(r=1;r<=2;r++)
      for(c=1;c<=5;c++)
         printf("%d ",++n);
   printf("\n");

   //4. while()로 무한반복문 만들기 
   n=0;
   r=0;
   while(1)
   {
      if(++r>2) break;
      c=0;
      while(1)
      {
         if(++c>5) break;
         printf("%d ",++n);
      }
   }
   printf("\n");

   //5. do~while()로 무한반복문 만들기 
   n=0;
   r=0;
   do{
      if(r++>=2) break;
      c=0;
      do{
         if(c++>=5) break;
         printf("%d ",++n);
      }while(1);
   }while(1);
   printf("\n");

   //6. for(;;)로 무한반복문 만들기 
   n=0;
   r=0;
   for(;;)
   {
      if(++r>2) break;
      c=0;
      for(;;)
      {
         if(++c>5) break;
         printf("%d ",++n);
      }
   }
   printf("\n");

   //7. while()반복문 사용하기
   n=0;
   r=0;
   while(r++<5)
   {
      c=0;
      while(c++<2)
         printf("%d ",++n);
   }
   printf("\n");

   //8. do~while()반복문 사용하기
   n=0;
   r=0;
   do{
      c=0;
      do{
         printf("%d ",++n);
      }while(++c<2);
   }while(++r<5);
   printf("\n");

   //9. for(;;)반복문 사용하기
   n=0;
   for(r=1;r<=5;r++)
      for(c=1;c<=2;c++)
         printf("%d ",++n);
   printf("\n");

   //10. while()로 무한반복문 만들기 
   n=0;
   r=0;
   while(1)
   {
      if(++r>5) break;
      c=0;
      while(1)
      {
         if(++c>2) break;
         printf("%d ",++n);
      }
   }
   printf("\n");

   //11. do~while()로 무한반복문 만들기 
   n=0;
   r=0;
   do{
      if(r++>=5) break;
      c=0;
      do{
         if(c++>=2) break;
         printf("%d ",++n);
      }while(1);
   }while(1);
   printf("\n");

   //12. for(;;)로 무한반복문 만들기 
   n=0;
   r=0;
   for(;;)
   {
      if(++r>5) break;
      c=0;
      for(;;)
      {
         if(++c>2) break;
         printf("%d ",++n);
      }
   }
   printf("\n");

   //13. while(), do~while()반복문 사용하기
   n=0;
   r=1;
   do{
      c=0;
      while(c++<2)
         printf("%d ",++n);
   }while(r++<5);
   printf("\n");

   //14. for(),do~while()반복문 사용하기
   n=0;
   r=0;
   do{
      for(c=1;c<=2;c++)
         printf("%d ",++n);
   }while(++r<5);
   printf("\n");

   //15. for(;;),while()반복문 사용하기
   n=0;
   r=0;
   while(r++<2)
      for(c=1;c<=5;c++)
         printf("%d ",++n);
   printf("\n");

   //16. while(),do~while()로 무한반복문 만들기 
   n=0;
   r=0;
   while(1)
   {
      if(++r>5) break;
      c=0;
      do{
         if(++c>2) break;
         printf("%d ",++n);
      }while(1);
   }
   printf("\n");

   //17. for(),do~while()로 무한반복문 만들기 
   n=0;
   r=0;
   for(;;)
   {
      if(r++>=2) break;
      c=0;
      do{
         if(c++>=5) break;
         printf("%d ",++n);
      }while(1);
   }
   printf("\n");

   //18. for(;;),while()로 무한반복문 만들기 
   n=0;
   r=0;
   for(;;)
   {
      if(++r>2) break;
      c=0;
      while(1)
      {
         if(++c>5) break;
         printf("%d ",++n);
      }
   }
   printf("\n");

   return 0;
}

 

참고풀이2 결과]

 

 

3. 배열을 사용하기

참고풀이3]

//배열을 사용하여 1~10까지 출력하는 프로그램을 작성하기
//배열은 1,2,3차원으로 구분할 수 있다.
//3*72+3*13=255
#include <stdio.h>
int main()
{
   int A1[10]={0}; //1차원 배열변수 
   int A2[5][2]={0};//2차원 배열변수
   int A3[2][2][5]={0};//3차원 배열변수 
   int s,r,c;//면,행,열 변수 
   int n;//증가값 변수 

   //1. 1차원 배열 사용하기 
   //배열에 값 넣기
   for(n=0,c=0;c<10;c++)
      A1[c]=++n;

   //결과 출력하기
   for(c=0;c<10;c++)
      printf("%d ",A1[c]);
   printf("\n");
 
   //2. 2차원 배열 사용하기 
   //배열에 값 넣기
   for(n=0,r=0;r<2;r++)
      for(c=0;c<5;c++)
         A2[r][c]=++n;

   //결과 출력하기
   for(r=0;r<2;r++)
      for(c=0;c<5;c++)
         printf("%d ",A2[r][c]);
   printf("\n");
 
   //3. 3차원 배열 사용하기 
   //배열에 값 넣기
   for(n=0,s=0;s<2;s++)
   {
      for(r=0;r<2;r++)
         for(c=0;c<5;c++)
            A3[s][r][c]=++n;
      if(n==10) break;
   }

   //결과 출력하기
   for(s=0;s<2;s++)
   {
      for(r=0;r<2;r++)
         for(c=0;c<5;c++)
            if(A3[s][r][c] != 0) 
               printf("%d ",A3[s][r][c]);
   }
   printf("\n");

   return 0;
}

 

참고풀이3 결과]

 

 

4. 함수를 사용하기

참고풀이4]

//함수를 사용하여 1~10까지 출력하기
#include <stdio.h>

void independence1(); //독립함수 
int independence2(); //독립종속함수 
void subordination1(int); //종속독립함수 
int subordination2(int); //종속종속함수 
int subordination3(int); //재귀함수 

int main()
{
   int c;

   //1.독립함수로 작성하기
   independence1();
   printf("\n");

   //2.독립종속으로 작성하기
   for(c=1;c<=10;c++)
      printf("%d ",independence2());
   printf("\n");

   //3.종속독립함수로 작성하기
   subordination1(10);
   printf("\n");

   //4.종속종속으로 작성하기
   for(c=1;c<=10;c++)
      printf("%d ",subordination2(c));
   printf("\n");

   //5.재귀함수로 작성하기
   subordination3(10);
   printf("\n");

   return 0;
}

void independence1()
{
   int n;
   for(n=1;n<=10;n++)
      printf("%d ",n);
}

int independence2()
{
   static int n=0;
   return ++n;
}

void subordination1(int n)
{
   int i;
   for(i=1;i<=10;i++)
      printf("%d ",i);
}

int subordination2(int n)
{
   return n;
}

int subordination3(int n)
{
   if(n==0) return 0;
   printf("%d ",11-n);
   subordination3(n-1);
}

 

참고풀이4 결과]

 

 

5. 포인터와 동적메모리를 사용하기

참고풀이5]

//포인터와 동적메모리를 활용하여 1~10출력하기
#include <stdio.h>
#include <stdlib.h> //malloc(),free()

void P_ont1(int*, int);

int main()
{
   int A1[10]={0};
   int s,r,c;
   int n;

   P_ont1(A1,10);

   //결과출력
   for(c=0;c<10;c++)
      printf("%d ",A1[c]);
   printf("\n");

   //동적 메모리를 할당한다. 
   //int * : 1차원 동적메모리를 선언한다. 
   int *M=(int *) malloc(sizeof(int)*10);
   n=0;
   for(c=0;c<10;c++)
      M[c]=++n;

   //결과 출력
   for(c=0;c<10;c++)
      printf("%d ",M[c]);
   printf("\n");

   //해제
   free(M);

   //int ** : 2차원 동적메모리를 선언한다. 
   n=0;
   int **MM=(int **)malloc(sizeof(int *)*2);
   for(r=0;r<2;r++)
   {
      MM[r]=(int *)malloc(sizeof(int)*5);
      for(c=0;c<5;c++)
         MM[r][c]=++n;
   }

   //결과출력
   for(r=0;r<2;r++)
      for(c=0;c<5;c++)
         printf("%d ",MM[r][c]);
   printf("\n");

   //해제
   for(r=0;r<2;r++) 
      free(MM[r]);
   free(MM);

   //int ***  : 3차원 동적메모리를 선언한다. 
   n=0;
   int ***M3=(int ***)malloc(sizeof(int **)*2);
   for(s=0;s<2;s++)
   {
      M3[s]=(int **)malloc(sizeof(int *)*5);
      for(r=0;r<5;r++)
      {
         M3[s][r]=(int *)malloc(sizeof(int)*2);
         for(c=0;c<2;c++)
         {
            ++n;
            M3[s][r][c]=(n>10) ? 0 : n;
         }
      }
   }

   //결과출력
   for(s=0;s<2;s++) 
      for(r=0;r<5;r++)
         for(c=0;c<2;c++)
            if(M3[s][r][c])
               printf("%d ",M3[s][r][c]);
   printf("\n");

   //해제
   for(s=0;s<2;s++)
   {
      for(r=0;r<5;r++) 
         free(M3[s][r]);
      free(M3[s]);
   }
   free(M3);

   return 0;
}

void P_ont1(int *p,int C)
{
   int i;
   for(i=0;i<C;i++)
      p[i]=i+1;
}

 

참고풀이5 결과]

 

 

반응형

댓글