오늘은 강의없이 문제풀이만 하는 날이다.
문제 1
임의의 양의 정수(n)를 입력받아 1~100 사이에서 n의 배수의 개수를 출력하는 프로그램을 작성하세요.
실행결과
입력(양의 정수) : 7
7의 배수 : 7 14 21 28 35 42 49 56 63 70 77 84 91 98
7의 배수 개수 : 14
계속하려면 아무 키나 누르십시오...
A:
#include <stdio.h>
void main()
{
int num;
int total =0;
printf("입력(양의 정수) : ");
scanf_s("%d", &num);
printf("%d의 배수 : ",num);
for (int i=1 ; i<= 100; i++)
{
if(i % num ==0)
{
printf("%d ", i);
total = total + i / i;
}
}
printf("\n%d의 배수 개수 : %d",num, total);
}
문제 2
반복문을 이용해서 다음과 같은 결과를 출력하는 프로그램을 작성하세요.
실행 결과
*
* *
* * *
* * * *
* * * * *
계속하려면 아무 키나 누르십시오...
A:
#include <stdio.h>
void main()
{
char star = '*';
for (int i = 0; i < 5; i++)
{
for(int j=0;j<i+1;j++)
{
printf("%c ", star);
}
printf("\n");
}
}
문제 3
반복문을 이용해서 다음과 같은 결과를 출력하는 프로그램을 작성하세요.
실행 결과
*******
*****
***
*
계속하려면 아무 키나 누르십시오...
A:
별을 줄이 바뀌면서 2개씩 줄어드는 것과 앞에 공백이 하나씩 증가하는 것을 생각하느라 시간을 꽤 소비한 문제였다. 지금으로는 더 간단하게 풀 수 있는 방법을 모르겠다..
#include <stdio.h>
void main()
{
char star = '*';
char space = ' ';
for (int i = 0; i < 4; i++)
{
for (int k = 0; k < i; k++)
{
printf("%c", space);
}
for(int j=7; j-2*i>0 ; j--)
{
printf("%c", star);
}
printf("\n");
}
}
문제 4
반복문을 이용해서 키도브로부터 입력받은 값을 구구단으로 출력해 주는 프로그램을 작성하세요
실행 결과
숫자를 입력하세요 : 5
5 * 0 = 0입니다.
5 * 1 = 5입니다.
...(중략)
5 * 9 = 45입니다.
계속하려면 아무 키나 누르십시오...
A:
비교적 간단한 문제였다.
#include <stdio.h>
void main()
{
int dan;
printf("숫자를 입력하세요 : ");
scanf_s("%d", &dan);
for (int i = 0; i < 10; i++)
{
printf("%d * %d = %d입니다.\n", dan, i, dan * i);
}
}
문제 5
팩토리얼 연산 결과를 출력하는 프로그램을 작성하세요. 팩토리얼 연사을 위한 공식은 다음과 같습니다.
n! = n * (n-1) * ...* 3 * 2 * 1
실행 결과
팩토리얼 연산을 원하는 숫자를 입력하세요 : 5
5의 팩토리얼 연산 결과는 120입니다.
계속하려면 아무 키나 누르십시오..
A:
#include <stdio.h>
void main()
{
int num;
int factorial = 1;
printf("팩토리얼 연산을 원하는 숫자를 입력하세요 : ");
scanf_s("%d", &num);
for (int i = 0; i < num; i++)
{
factorial = factorial * (num - i);
}
printf("%d의 팩토리얼 연산 결과는 %d입니다.", num, factorial);
}
문제 6
간단한 덧셈 계산기를 작성합니다. 하지만 계산 결과를 출력한 후 종료되지 않고 다음 계산을 위해 입력을 받을 준비를 합니다.
실행 결과
첫 번재 수를 입력해 주세요 : 3
두 번째 수를 입력해 주세요 : 10
3 + 10 = 13입니다.
첫 번째 수를 입력해 주세요 :
A:
do while 문을 사용하면 비교적 쉽게 풀 수 있는 문제이다.
#include <stdio.h>
void main()
{
int num1, num2;
do
{
printf("첫 번째 수를 입력해 주세요: ");
scanf_s("%d", &num1);
printf("두 번째 수를 입력해 주세요: ");
scanf_s("%d", &num2);
printf("%d + %d = %d입니다.\n", num1, num2, num1 + num2);
} while (1);
}
문제 7
시험 점수의 평균을 산출하려고 합니다. 과목은 총 10과목입니다. 각 과목의 점수를 차례로 입력받고 평균을 보여주는 프로그램을 작성해 보세요.
실행 결과
열 과목의 점수의 평균을 계산합니다.
점수를 입력해 주세요 : 80
점수를 입력해 주세요 : 93
점수를 입력해 주세요 : 100
점수를 입력해 주세요 : 83
점수를 입력해 주세요 : 72
점수를 입력해 주세요 : 69
점수를 입력해 주세요 : 53
점수를 입력해 주세요 : 88
점수를 입력해 주세요 : 73
점수를 입력해 주세요 : 77
열 과목 점수의 평균은 78.8점입니다.
계속하려면 아무 키나 누르십시오...
A:
#include <stdio.h>
void main()
{
int score;
double total = 0;
printf("열 과목의 점수의 평균을 계산합니다.\n");
for (int i = 0; i < 10; i++)
{
printf("점수를 입력해 주세요 : ");
scanf_s("%d", &score);
total = total + score;
}
printf("열 과목 점수의 평균은 %.1lf점입니다.", total / 10);
}
문제 8
키보드로부터 정수를 계속 입력받아 덧셈 연산을 수행합니다. 만약 0이 입력되면 지금까지 입력한 정수의 덧셈 결과와 총 몇 번을 입력했는지를 출력하는 프로그램을 작성하세요.
A:
#include <stdio.h>
void main()
{
int num=0;
int total = 0;
int count = 0;
printf("정수를 입력하면 덧셈 연산하는 프로그램. 0을 입력하면 덧셈 결과와 총 몇 번 입력했는지 출력\n\n");
do
{
printf("정수 입력 :");
scanf_s("%d", &num);
total = total + num;
count++;
} while (num != 0);
printf("덧셈 결과 : %d \n", total);
printf("정수 입력 횟수 : %d \n", count-1);
}
문제 9
프로그램 사용자로부터 양의 정수를 하나 입력 받아서, 그 수만큼 "Hello World!"를 출력하는 프로그램을 작성해보자.
A:
#include <stdio.h>
void main()
{
int num;
printf("정수를 입력하면 입력한 횟수만큼 hello world 출력\n");
printf("횟수 입력 : ");
scanf_s("%d", &num);
for (int i = 0; i < num; i++)
{
printf("Hello World!\n");
}
}
문제 10
프로그램 사용자로부터 양의 정수를 하나 입력 받은 다음, 그 수만큼 3의 배수를 출력하는 프로그램을 작성해 보자. 예를 들어 5를 입력받았다면, 3 6 9 12 15를 출력해야하고 3을 입력받았다면, 3 6 9 를 출력해야 한다.
A:
#include <stdio.h>
void main()
{
int num;
printf("입력한 정수만큼 3의 배수를 출력");
printf("정수 입력 : ");
scanf_s("%d", &num);
for (int i = 1; i <= 3*num +1; i++)
{
if (i % 3 != 0) continue;
printf("%d ", i);
}
}
문제 11
프로그램 사용자로부터 입력 받은 숫자에 해당하는 구구단을 출력하되, 역순으로 출력하는 프로그램을 작성해 보자.
A:
#include <stdio.h>
void main()
{
int num;
printf("정수를 입력하면 역순으로 구구단을 출력하는 프로그램\n\n");
printf("단수를 입력하세요. : ");
scanf_s("%d", &num);
for (int i = 9; i > 0; i--)
{
printf("%d * %d = %d\n", num, i, num * i);
}
}
문제 12
1이상 100미만의 정수 중에서 7의 배수와 9의 배수를 출력하는 프로그램을 작성해 보자.
단! 7의 배수이면서 동시에 9의 배수인 정수는 한번만 출력해야 한다.
A:
#include <stdio.h>
void main()
{
for (int i = 1; i < 100; i++)
{
if (i % 7 != 0 && i % 9 != 0) continue;
printf("%d ", i);
}
}
문제 13
두 개의 정수를 입력 받아서 두 수의 차를 출력하는 프로그램을 구현해 보자. 단, 무조건 큰 수에서 작은 수를 뺀 결과를 출력해야 한다. 예를 들어서 입력된 두 수가 순서에 상관없이 12와 5라면 7이 출력되어야 하고, 입력된 두 수가 순서에 상관없이 4와 16이라면 12가 출력되어야 한다. 즉, 출력 결과는 무조건 0 이상이 되어야 한다.
A:
#include <stdio.h>
void main()
{
printf("입력 받은 두수의 차이를 구하는 프로그램\n\n");
int num;
int minus = 0;
for (int i = 0; i < 2; i++)
{
printf("정수 입력 : ");
scanf_s("%d", &num);
minus = num - minus;
}
if (minus <= 0)
{
printf("결과 값: %d", -minus);
}
else
{
printf("결과 값: %d", minus);
}
}
문제 14
위의 문제를 if와 else말고 삼항 연산자로 해보자.
A:
#include <stdio.h>
void main()
{
printf("입력 받은 두수의 차이를 구하는 프로그램\n\n");
int num;
int minus = 0;
int i = 0;
while (i < 2)
{
printf("정수 입력 : ");
scanf_s("%d", &num);
minus = num - minus;
i++;
}
int result;
result = (minus < 0) ? -minus : minus;
printf("결과 값: %d", result);
}
문제 15
구구단을 출력하되 짝수 단(2단, 4단, 6단, 8단)만 출력되도록 한다. 또한 2단은 2*2까지, 4단은 4*4까지, 6단은 6*6까지, 8단은 8*8까지만 출력되도록 해보자. 이를 해결하기 위해 break와 continue문을 사용해보자.
A:
#include <stdio.h>
void main()
{
for (int i = 2; i < 10; i++)
{
if (i % 2 == 1) continue;
for (int j = 1; j <10; j++)
{
if(j == i +1 ) break;
printf("%d * %d = %d\n", i, j, i * j);
}
printf("\n");
}
}
break와 continue를 안쓰면 더 간단하게 코딩이 가능하다.
#include <stdio.h>
void main()
{
for (int i = 2; i < 10; i+=2)
{
for (int j = 1; j <= i; j++)
{
printf("%d * %d = %d\n", i, j, i * j);
}
printf("\n");
}
}
문제 16
프로그램 사용자로부터 입력 받은 정수의 평균을 출력하는 프로그램을 작성하되 다음 두 가지 조건을 만족시켜야 한다.
- 먼저 몇 개의 정수를 입력할 것인지 프로그램 사용자에게 묻는다. 그리고 그 수 만큼 정수를 입력 받는다.
- 평균값은 소수점 이하까지 출력되도록 한다.
A:
#include <stdio.h>
void main()
{
int num1,num2;
double total = 0;
printf("입력한 정수들의 평균을 출력\n\n");
printf("몇개의 정수를 입력하시겠습니까? :");
scanf_s("%d", &num1);
for (int i = 0; i < num1; i++)
{
printf("정수 입력 : ");
scanf_s("%d", &num2);
total += num2;
}
printf("평균 : %lf\n", total / num1);
}
문제 17
프로그램 사용자로부터 총 5개의 정수를 입력 받아서, 그 수의 합을 출력하는 프로그램을 작성해보자. 단, 한가지 조건이 있다. 정수는 반드시 1 이상이어야 한다. 만약에 1 미만의 수가 입력되는 경우에는, 이를 입력으로 인정하지 않고 재 입력을 요구해야 한다. 그래서 결국 1 이상의 정수 5개를 모두 입력 받을 수 있는 프로그램을 완성해야 한다.
A:
#include <stdio.h>
void main()
{
int num;
int total = 0;
int i = 0;
do
{
printf("정수 입력 : ");
scanf_s("%d", &num);
if (num < 1)
{
printf("1이상의 정수를 입력해주세요.\n");
continue;
}
else
{
total += num;
i++;
}
} while (i < 5);
printf("합 : %d", total);
}
for 문으로 풀기
#include <stdio.h>
void main()
{
int num;
int total = 0;
int i = 0;
for(;i<5;)
{
printf("정수 입력 : ");
scanf_s("%d", &num);
if (num < 1)
{
printf("1이상의 정수를 입력해주세요.\n");
continue;
}
else
{
total += num;
i++;
}
} while (i < 5);
printf("합 : %d", total);
}
문제 18
아래의 출력을 보이는 프로그램을 작성해보자.
*
o *
o o *
o o o *
o o o o *
참고로, 총 5행에 걸쳐서 출력이 이루어지고, 행이 더해질 때마다 'o'문자가 증가한다는 특징을 기반으로 while문의 중첩을 구성하면 된다.
A :
#include <stdio.h>
void main()
{
int i = 0;
while (i < 5)
{
int j = 0;
while (j < i)
{
printf("ㅇ");
j++;
}
printf("*");
i++;
printf("\n");
}
}
'# 개발 > C언어' 카테고리의 다른 글
c언어 #6 - 함수(function), 지역,전역,정적변수, 재귀호출 (국비8일차) (0) | 2023.01.10 |
---|---|
c언어 연습문제 #6 - 응용 (국비7일차) (0) | 2023.01.09 |
c언어 연습문제 #4 (국비6일차) (0) | 2023.01.06 |
c언어 #5 - 제어문(if, switch,for,while,break,continue) (국비6일차) (0) | 2023.01.06 |
c언어 연습문제 #3 (국비5일차) (0) | 2023.01.05 |