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 결과]
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 6제] 2021년 한국정보올림피아드 1차대회 초등부 2. 나누기 (0) | 2021.09.14 |
---|---|
C언어 5제] 2021년 한국정보올림피아드 1차대회 초등부 1. 지우개 (0) | 2021.08.10 |
C언어 4제] 2019년 한국정보올림피아드 1차대회 초등부 2번 - 회문 (0) | 2021.07.30 |
C언어 3제] 2019년 한국정보올림피아드 1차대회 초등부 1번 - 막대기 (0) | 2021.07.12 |
C언어 2제] 임의의 정수 N, M을 입력하여 N~M까지 출력하는 프로그램을 작성하시오. (0) | 2021.07.02 |
댓글