반응형
19. 구구단(2단~9단)을 가로로 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void)
{
int i, j;
for (i = 1; i <= 9; i++)
{
for (j = 2; j <= 9; j++)
printf("%d * %d = %2d ", j, i, i * j);
printf("\n");
}
return 0;
}
18번 코드를 약간 수정하면 된다. 외부 반복문의 i를 1~9까지, 내부 반복문의 j를 2~9까지 반복하고, i와 j가 출력되는 순서를 뒤집는다. 내부 반복문에서 개행문자를 없애고 공백을 넣으면 2단이 출력되고, 다음 줄에 3단이 출력되고, 마지막에 9단이 출력된다.
20. 키보드로 정수 n을 입력받아 n!(factorial)을 구하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void)
{
int i, fac = 1;
printf("숫자를 입력하세요: ");
scanf_s("%d", &i);
for (int j = 2; j <= i; j++)
{
fac *= j;
}
printf("%d! = %d", i, fac);
return 0;
}
i에다 숫자를 입력받는다. 반복문 안에서 j를 선언하고 2로 초기화한다. 팩토리얼을 저장할 fac을 1로 초기화 했기 때문에 j를 1부터 시작하지 않아도 된다. j가 i와 같아질 때까지 fac에 곱하면 팩토리얼을 출력할 수 있다.
21. 양의 정수 a와 b를 입력받은 후, 1 이상 100 이하의 정수 중 a의 배수지만 b의 배수가 아닌 수를 모두 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void)
{
int a, b;
printf("두 개의 정수 입력: ");
scanf_s("%d %d", &a, &b);
printf("%d의 배수이지만 %d의 배수는 아닌 수\n", a, b);
for (int i = 1; i <= 100; i++)
{
if ((i % a == 0) && (i % b != 0))
printf("%d ", i);
}
return 0;
}
a의 배수라면 a로 나눴을 때 나머지가 0이여야 한다. b의 배수가 아니라면 b로 나눴을 때 나머지가 0이 아니어야 한다. 두 조건을 모두 만족시키도록 if문을 구성하고 반복문을 돌리면 된다.
22. 반복문을 이용해 다음과 같은 패턴을 출력하는 프로그램을 작성하시오.
1.
#include <stdio.h>
int main(void)
{
int i;
for (i = 1; i <= 9; i ++)
{
if (i == 1 || i == 9) printf("*********\n");
else printf("* *\n");
}
return 0;
}
1, 9번째 줄은 별 9개를 출력한다. 나머지 경우엔 별, 공백 7개, 별을 출력한다.
2.
#include <stdio.h>
int main(void)
{
int i, j;
for (i = 1; i <= 5; i++)
{
for (j = 1; j <= 5 - i; j++)
printf(" ");
for (j = 1; j <= 2 *i - 1; j++)
printf("*");
printf("\n");
}
for (i = 4; i >= 1; i--)
{
for (j = 1; j <= 5 - i; j++)
printf(" ");
for (j = 1; j <= 2 * i - 1; j++)
printf("*");
printf("\n");
}
return 0;
}
피라미드 형태로 출력한다. 별이 홀수개 출력되어야 한다. 별을 2*i-1개 출력하면 된다. 공백은 5-i개만큼 출력하면 원하는 형태로 출력된다.
역피라미드는 i를 줄이면서 출력하면 된다. 별이 9개 출력되는 줄은 중복되지 않으므로 i를 4부터 줄였다.
3.
#include <stdio.h>
int main(void)
{
int i, j;
for (i = 1; i <= 9; i ++)
{
for (j = 1; j <= i; j++)
printf("%d", j);
printf("\n");
}
return 0;
}
왼쪽 아래가 직각인 삼각형 형태로 숫자를 출력한다. 별 대신 수 자체를 출력하면 된다.
4.
#include <stdio.h>
int main(void)
{
int i, j;
for (i = 9; i >= 1; i --)
{
for (j = 1; j <= i; j++)
printf("%d", j);
printf("\n");
}
return 0;
}
왼쪽 위가 직각인 삼각형 형태로 숫자를 출력한다. 9-3번에서 i를 줄이면 된다.
23. 원하는 피보나치의 개수를 입력해서 그 개수만큼 수열이 출력되는 프로그램을 작성하시오.
#include <stdio.h>
int main(void)
{
int i, max, fib1 = 0, fib2 = 1, fibn;
printf("피보나치 개수 입력: ");
scanf_s("%d", &max);
printf("***피보나치 수열***\n");
printf("%d, %d", fib1, fib2);
for (i = 1; i <= max - 2; i ++)
{
fibn = fib1 + fib2;
fib1 = fib2;
fib2 = fibn;
printf(", %d", fibn);
}printf("입니다.\n");
return 0;
}
첫 번째 수와 두 번째 수는 0과 1로 정해져 있다. 따로 정의하고 먼저 출력한다.
max를 입력받았는데 첫 번째, 두 번째 수는 이미 출력했으므로 두 수를 제외한 만큼 출력해야 한다. 반복문을 max - 2번 돌린다.
반복문 내부는 점화식대로 작성한다. 수가 생성되는대로 출력하고 반복문이 끝나면 '입니다'를 출력한다.
반응형
'프로그래밍 > C, C++' 카테고리의 다른 글
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 6 (1,2,3,4,5,6) (0) | 2020.07.29 |
---|---|
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 5 (24,25,26) (0) | 2020.07.26 |
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 5 (13,14,15,16,17,18) (0) | 2020.07.25 |
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 5 (8,9,10,11,12) (0) | 2020.07.24 |
소수점 이하 자리에 나오는 0을 없애고 싶을 때 (0) | 2020.05.25 |