c언어 연습문제 #6 - 응용 (국비7일차)

문제 1

 다음과 같이 출력하는 프로그램을 만드시오.

etc-image-0

A:

#include <stdio.h>

void main()
{
for (int i = 0; i < 10; i+=3)
{
for (int j = 1; j < 10; j++)
{
for (int k = 1; k < 4; k++)
{
printf("%d * %d = %d \t", k+i, j, (k+i )* j);
}
printf("\n");
}
printf("\n");
}

}

etc-image-1

 

 

문제 2

 다음과 같이 출력하는 프로그램을 만드시오.

etc-image-2
etc-image-3

A:

생각보다 많은 것을 고려해야하고 , 어렵기도 했다.... 더 쉽게 푸는 방법이 있을까? 

#include <stdio.h>

void main()
{
int numMax, line;

printf("ZigZag 숫자 출력프로그램입니다.\n");

printf("출력하고자 하는 최대값을 입력하세요 : ");
scanf_s("%d", &numMax);

printf("한줄에 출력하고자 하는 숫자의 개수를 입력 : ");
scanf_s("%d", &line);
int num=1;
for (int i =0; i < (numMax /line)+1   ; i++)
{

if(i % 2 == 0)
{
for (int j = 0; j < line; j++)
{
if (num > numMax) break;
printf("%d\t", num);
num++;
}
}
else
{
num = num + line -1;
for (int j = 0; j < line; j++)
{
if (num > numMax)
{
printf(" \t");
num--;

}
else

printf("%d\t", num);
num--;
}
}
num += line +1;
}
printf("\n");
}
}

 

while로 풀면

#include <stdio.h>

void main()
{
int numMax, line;

printf("ZigZag 숫자 출력프로그램입니다.\n");

printf("출력하고자 하는 최대값을 입력하세요 : ");
scanf_s("%d", &numMax);

printf("한줄에 출력하고자 하는 숫자의 개수를 입력 : ");
scanf_s("%d", &line);
int num=1;
int i = 0;

while (i <= numMax / line)
{
int j = 0;
if(i%2==0)
{
while (j < line)
{
if (num > numMax) break;
printf("%d\t", num);
j++;
num++;
}
}
else
{
num = num + line -1;
while(j< line)
{
if (num > numMax)
{
printf(" \t");
j++;
num--;
}

else
{
printf("%d\t", num);
j++;
num--;
}

}
num = num + line +1;

}
printf("\n");
i++;
}

}

 

etc-image-4