: 2022/08/11
- 1~99 사이의 정수 중 하나를 컴퓨터가 가지고 있고, 사용자가 그 수를 알아맞히는 프로그램을 작성하시오. (사용자가 알아맞히는데 걸린 시도 횟수를 함께 출력한다.)
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(NULL));
int guess, count = 0;
int answer = rand() % 99 + 1;
do {
printf("정답을 추측해 보시오: ");
scanf("%d", &guess);
if (guess > answer)
{
printf("더 작은 수를 말해봐\n");
count++;
}
else if(guess < answer)
{
printf("더 큰 수를 말해봐\n");
count++;
}
} while (guess != answer);
printf("축하합니다. %d번만에 맞쳤네요\n", count+1);
return 0;
}
👉실행 결과
정답을 추측해 보시오: 50
더 작은 수를 말해봐
정답을 추측해 보시오: 30
더 작은 수를 말해봐
정답을 추측해 보시오: 20
더 작은 수를 말해봐
정답을 추측해 보시오: 10
더 큰 수를 말해봐
정답을 추측해 보시오: 15
축하합니다. 5번만에 맞쳤네요
- 점수를 입력 받아 학생수, 총점, 평균, 가장 좋은 점수를 출력하는 프로그램을 작성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int score, max = 0, std = 0, total = 0;
double avg;
while (1)
{
printf("Enter a score(-1 for exit): ");
scanf("%d", &score);
if (score == -1)
break;
if (max <= score)
max = score;
total += score;
std++;
}
avg = (double)total / std;
printf("You've entered %d students.\n", std);
if (std != 0)
{
printf("The total is %d.\n", total);
printf("The average is %.1f.\n", avg);
printf("The best score is %d.\n", max);
}
else
printf("There is no data.\n");
return 0;
}
👉실행 결과
Enter a score(-1 for exit): 30
Enter a score(-1 for exit): 50
Enter a score(-1 for exit): 30
Enter a score(-1 for exit): -1
You've entered 3 students.
The total is 110.
The average is 36.7.
The best score is 50.
- 정수를 2개 입력받아 두 수의 최대 공약수를 구하는 프로그램을 작성하시오.
(단, 유클리드 호제법 사용해 푼다.)
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int x, y, r;
printf("두 개의 정수를 입력하시오(큰수, 작은수): ");
scanf("%d %d", &x, &y);
while (y != 0)
{
r = x % y;
x = y;
y = r;
}
printf("GCD = %d\n", x);
return 0;
}
👉실행 결과
두 개의 정수를 입력하시오(큰수, 작은수): 18 12
GCD = 6
- 소문자를 입력받아 대문자로 변경하여 출력하는 프로그램을 작성하시오. (단, 대문다 'Q'를 입력하면 프로그램을 종료하도록 하며, 소문자와 대문자 'Q'가 아니면 다시 입력받는다.)
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
char ch;
while (1)
{
printf("소문자를 입력: ");
scanf(" %c", &ch);
if (ch == 'Q')
break;
else if (ch >= 'a' && ch <= 'z')
ch -= 32;
else
continue;
printf("변환된 대문자는 %c\n", ch);
}
return 0;
}
👉실행 결과
소문자를 입력: a
변환된 대문자는 A
소문자를 입력: 1
소문자를 입력: Q
- 정수 n을 입력받아 1~n 사이의 소수를 모두 구하여 출력하는 프로그램을 작성하시오. (단, 소수는 한줄에 10개씩 출력한다.)
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num, i, k, count = 0, enter = 0;
printf("양의 정수? ");
scanf("%d", &num);
for (i = 2; i <= num; i++) {
for (k = 2; k <= i; k++) {
if (i % k == 0)
count++;
}
if (count == 1)
{
printf(" %2d", i);
enter++;
if (enter % 10 == 0)
printf("\n");
}
count = 0;
}
printf("\n");
return 0;
}
👉실행 결과
양의 정수? 100
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
- 0~99까지의 숫자를 임의로 발생시켜 사용자가 원하는 만큼 덧셈문제를 연습할 수 있도록 프로그램을 작성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int x, y, answer, right_answer;
char ch;
do {
srand(time(NULL));
x = rand() % 100;
y = rand() % 100;
printf("%d + %d = ", x, y);
scanf("%d", &answer);
right_answer = x + y;
if (answer == right_answer)
printf("Your answer is right\n");
else
{
printf("Your answer is wrong.\n");
printf("%d is the right answer.\n", right_answer);
}
while (getchar() != '\n');
printf("continue?(y/n): ");
scanf("%c", &ch);
} while (ch == 'y');
return 0;
}
👉실행 결과
92 + 48 = 136
Your answer is wrong.
140 is the right answer.
continue?(y/n): y
21 + 80 = 101
Your answer is right
continue?(y/n): n
- num이 소수이면 1, 아니면 0을 반환하는 isPrime()을 이용하여 2부터 시작하여 차례대로 10개의 소수를 구하여 출력하는 프로그램을 완성하시오.
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int isPrime(int n);
int main(void)
{
int num = 1;
for (int i = 1;; i++)
{
if (isPrime(i))
{
printf("%d번째 소수는 %d\n", num, i);
num++;
}
if (num == 11)
break;
}
}
int isPrime(int n)
{
int i, j, count = 0;
for (i = 1; i <= n; i++)
if (n % i == 0)
count++;
if (count == 2)
return 1;
else
return 0;
}
👉실행 결과
1번째 소수는 2
2번째 소수는 3
3번째 소수는 5
4번째 소수는 7
5번째 소수는 11
6번째 소수는 13
7번째 소수는 17
8번째 소수는 19
9번째 소수는 23
10번째 소수는 29
- 입력받은 수식의 계산 결과를 출력하는 프로그램을 작성하시오.
(단, "0 0"이 입력되면 프로그램을 종료한다.)
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int accumulator(char op, int n, int prevResult);
int main(void)
{
int result = 0, num;
printf("%d ", result);
char op = ' ';
while (1)
{
scanf(" %c %d", &op, &num);
if ((op == '0') && (num == 0))
break;
else {
result = accumulator(op, num, result);
printf("= %d", result);
}
}
return 0;
}
int accumulator(char op, int n, int prevResult)
{
if (op == '+')
prevResult += n;
else if (op == '-')
prevResult -= n;
else if (op == '*')
prevResult *= n;
else if (op == '/')
prevResult /= n;
return prevResult;
}
👉실행 결과
0 + 15
= 15 * 7
= 105 / 3
= 35 - 2
= 33 0 0
- 왼쪽 정열 직각삼각형
👉코드1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int num;
printf("rows? ");
scanf("%d", &num);
for (int i = 0; i < num; i++) {
for (int j = 0; j <= i; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
👉코드2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int num;
printf("rows? ");
scanf("%d", &num);
for (int i = 1; i <= num; i++) {
for (int j = 1; j < i+1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
👉실행 결과
rows? 4
*
**
***
****
- 왼쪽 정열 역삼각형
👉코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int num;
printf("rows? ");
scanf("%d", &num);
for (int i = num; i > 0; i--) {
for (int j = 0; j < i; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
👉실행 결과
rows? 4
****
***
**
*
- 오른쪽 정열 직각삼각형
👉코드1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num;
printf("rows? ");
scanf("%d", &num);
for (int i = num; i > 0; i--) {
for (int j = 0; j < i - 1; j++) {
printf(" ");
}
for (int k = i; k < num+1; k++) {
printf("*");
}
printf("\n");
}
return 0;
}
👉코드2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int row;
printf("rows? ");
scanf("%d", &row);
for (int i = 0; i < row; i++)
{
for (int j = 0; j < row – i - 1; j++)
printf(" ");
for (int k = 0; k < i + 1; k++)
printf("*");
printf("\n");
}
return 0;
}
👉실행 결과
rows? 4
*
**
***
****
- 피라미드
👉코드1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num;
printf("rows? : ");
scanf("%d", &num);
for (int a = 1; a <= num; a++){
for (int b = (num - 1); b >= a; b--){
printf(" ");
}
for (int c = 1; c <= 2 * a - 1; c++){
printf("*");
}
printf("\n");
}
return 0;
}
👉실행 결과
rows? 4
*
***
*****
*******
- 피라미드(2)
👉코드1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num;
printf("rows? : ");
scanf("%d", &num);
for (int i = 0; i < num; i++) {
for (int j = 0; j <= i; j++) {
printf("*");
}
printf("\n");
}
for (int i = num - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
👉실행 결과
rows? 4
*
**
***
****
***
**
*