문제 1.
키보드로부터 세 정수를 입력받아 (x + y) * (x + z) / (y % z)를 출력하는 프로그램을 작성하세요.
A:
#include <stdio.h>
void main()
{
printf("input x : ");
scanf_s("%d", &x);
printf("input y : ");
scanf_s("%d", &y);
printf("input z : ");
scanf_s("%d", &z);
printf("(x + y) * (x + z) / (y % z) = %d \n", (x + y)* (x + z) / (y % z));
}

문제 2.
두 수를 입력받아서 둘 중 작은 값을 구하여 출력하는 프로그램을 작성하세요. 단, 두 수가 같으면 그 수를 출력하세요. 조건 연산자를 이용하세요.
A:
삼항 연산자를 사용해서 푸는 문제이다.
#include <stdio.h>
void main()
{
int num1, num2;
printf("input : ");
scanf_s("%d", &num1);
printf("input : ");
scanf_s("%d", &num2);
int result1;
result1 = (num1 == num2) ? num1 : (num1 > num2) ? num2 : num1;
printf("Smaller Number : %d", result1);
}
문제 3.
사용자로부터 정수 세 개를 입력받아 정수형 변수 a,b,c에 각각 저장한 후, 조건 연산자를 사용하여 이들 변수 중 가장 큰 값을 출력하는 프로그램을 작성하세요.
A:
이 문제도 조건 연산자를 잘 쓰면된다. 조건이 좀 까다롭게 보일 수도 있다.
#include <stdio.h>
void main()
{
int num1, num2, num3;
printf("입력한 3 정수 중 가장 큰 값을 출력하는 프로그램\n\n");
printf("input num1 : ");
scanf_s("%d", &num1);
printf("input num2 : ");
scanf_s("%d", &num2);
printf("input num3 : ");
scanf_s("%d", &num3);
int result1;
result1 = (num1 >= num2 && num1 >= num3) ? num1 :
(num2 >= num3) ? num2 : num3;
printf("가장 큰 값 : %d", result1);
}

문제 4.
현재의 원화 환율을 찾아 변수에 저장하고, 달러를 키보드로부터 입력받으면 원화로 출력하는 프로그램을 작성하세요.
A:
#include <stdio.h>
void main()
{
int exchangeRate = 1270;
int quantity;
printf("달러를 입력하면 원화로 계산해드립니다. \n\n");
printf("계산할 달러 : ");
scanf_s("%d", &quantity);
int result1;
result1 = quantity * exchangeRate;
printf("\\ %d 입니다.\n", result1);
}

문제 5.
현재 시각(시, 분, 초)를 입력받아 오늘 00시 00분 00초를 기준으로 몇 초가 흘렀는지를 계산하는 프로그램을 작성하세요.
A:
#include <stdio.h>
void main()
{
printf("현재 시간을 입력하면 0시부터 몇 초가 흘렀는지 계산해주는 프로그램 \n\n");
int hour, minute, second;
printf("시를 입력하세요. : ");
scanf_s("%d", &hour);
printf("분을 입력하세요. : ");
scanf_s("%d", &minute);
printf("초를 입력하세요. : ");
scanf_s("%d", &second);
int result1;
result1 = 3600 * hour + 60 * minute + second;
printf("00시 00분 00초로부터 %d초가 흘렀습니다. \n", result1);
}

문제 6.
1파운드(pound)는 0.45kg입니다. 밀가루 150파운드는 몇 kg인지를 계산하는 프로그램을 작성하세요.
A:
#include <stdio.h>
void main()
{
printf("입력한 파운드가 몇 kg인지 계산하는 프로그램 \n\n");
double poundPerKg = 0.45;
int num1;
printf("계산하고 싶은 파운드 수 : ");
scanf_s("%d", &num1);
double result1;
result1 = (double)num1 * poundPerKg;
printf("%d 파운드는 %lf kg입니다. \n", num1, result1);
}

문제 7.
마일을 킬로미터로 변환하는 프로그램을 작성하자. 1마일은 1.609킬로미터와 같다.
프로그램 예시)
마일을 입력하시오: 10
10마일은 16.09킬로미터입니다.
A :
#include <stdio.h>
void main()
{
double milePerKm = 1.609;
int mile;
printf("마일을 입력하시오. : ");
scanf_s("%d", &mile);
double result1;
result1 = mile * milePerKm;
printf("%d마일은 %.3lf킬로미터 입니다. \n", mile, result1);
}
문제 8.
상점에 가면 우리는 상품에 대한 돈을 내고 영수증을 받는다. 영수증에서는 10% 부가세와 잔돈 등이 인쇄되어 있다. 구입한 상품의 가격과 손님한테 받은 금액을 입력하면 부가세와 잔돈을 출력하는 프로그램을 작성하여 보자.
예시)
받은 돈: 10000
상품 가격: 7500
부가세: 750
잔돈: 1750
A:
#include <stdio.h>
void main()
{
int price, money, vat, change;
printf("받은 돈 : ");
scanf_s("%d", &money);
printf("상품 가격 : ");
scanf_s("%d", &price);
printf("\n");
vat = price * 0.1;
change = money - price - vat;
printf("부가세 : %d \n",vat);
printf("잔돈 : %d \n",change);
}

문제 9.
사용자로부터 원의 반지름을 입력받아서 면적을 계산하여 출력하는 프로그램을 작성하자. 단, 원의 반지름(r)은 실수(double형)로 입력되며 출력도 모두 실수형으로 하여야 한다.
면적을 계산하는 식은 다음과 같다.
3.14*r*r
A:
#include <stdio.h>
void main()
{
double radius;
printf(" 원의 반지름 : ");
scanf_s("%lf", &radius);
double result1;
result1 = 3.14 * radius * radius;
printf("원의 면적 : %lf", result1);
}
문제 10.
프로그램 사용자로부터 두 점의 x,y좌표를 입력 받아서, 두 점이 이루는 직사각형의 넓이를 계산하여 출력하는 프로그램을 작성해보자. 단, 좌 상단의 x,y 좌표 값이 우 하단의 x,y 좌표 값보다 작다고 가정하고, 좌 상단의 좌표정보를 먼저 입력 받는 형태로 예제를 작성해보자. 참고할 수 있는 실행예는 다음과 같다.
좌 상단의 x 좌표 : 2
좌 상단의 y 좌표 : 4
우 하단의 x 좌표 : 4
우 하단의 y 좌표 : 8
두 점이 이루는 직사각형의 넓이는 8입니다.
A:
#include <stdio.h>
void main()
{
int x1, x2, y1, y2;
printf("좌 상단의 x좌표 : ");
scanf_s("%d", &x1);
printf("좌 상단의 y좌표 : ");
scanf_s("%d", &y1);
printf("우 상단의 x좌표 : ");
scanf_s("%d", &x2);
printf("우 상단의 y좌표 : ");
scanf_s("%d", &y2);
int result1;
result1 = (x2 - x1) * (y2 - y1);
printf("두 점이 이루는 직사각형의 넓이는 %d입니다. \n", result1);
}

문제 11.
사용자로 부터 정수 하나를 입력받아라. 입력받은 정수의 절대값을 출력하는 프로그램을 작성하라.
A:
#include <stdio.h>
void main()
{
int num;
printf("절대값을 출력할 정수 : ");
scanf_s("%d", &num);
int result;
result = (num > 0) ? num : -num;
printf("%d의 절대값은 %d입니다.", num, result);
}
문제 12.
사용자로부터 한문자를 입력받아라. 입력받은 문자가 영어 대문자면 소문자로, 소문자면 대문자로, 그 밖에 특수문자면 그냥 특수문자 그대로 출력되도록 프로그램을 작성하여 보자.
[ 조건(삼항)연산자 사용 ]
결과 예시)
문자 입력 : A
출력 결과 : a
문자 입력 : b
출력 결과 : B
문자 입력 : @
출력 결과 : @
A:
이 문제는 오히려 쉽다. 조건연산자를 이용하면 금방된다.
#include <stdio.h>
void main()
{
char ch;
printf("문자 입력 : ");
scanf_s("%c", &ch);
ch = (ch >= 'a' && ch <= 'z') ? ch - 32 :
(ch >= 'A' && ch <= 'Z') ? ch + 32 :
ch;
printf("출력 결과 : %c", ch);
}

문제 13.
사용자로부터 정수 3개를 입력받아서 정수 3개의 합, 평균, 최대값, 최소값을 구해서 출력하는 프로그램을 작성하여 보자. 단, 평균은 소수점 2째자리까지만 출력 하자)
A:
#include <stdio.h>
void main()
{
printf("정수 3개를 입력하면 합, 평균, 최대값, 최소값을 출력하는 프로그램 \n\n");
int num1, num2, num3;
printf("정수1 : ");
scanf_s("%d", &num1);
printf("정수2 : ");
scanf_s("%d", &num2);
printf("정수3 : ");
scanf_s("%d", &num3);
int plus, max, min;
double avg;
plus = num1 + num2 + num3;
max = (num1 >= num2 && num1 >= num3) ? num1 :
(num2 >= num3) ? num2 : num3;
min = (num1 <= num2 && num1 <= num3) ? num1 :
(num2 <= num3) ? num2 : num3;
avg = (num1 + num2 + num3) / 3;
printf("합 : %d\n", plus);
printf("평균 : %.2lf\n",avg);
printf("최대값 : %d\n", max);
printf("최소값 : %d\n", min);
}

문제 14.
사용자로부터 0000과 1111 사이의 2진수를 입력받아 10진수로 출력하는 프로그램을 작성하세요.
A:
#include <stdio.h>
void main()
{
printf("2진수를 입력하면 10진수로 바꿔드립니다.\n\n");
int num1;
printf("2진수 입력 : ");
scanf_s("%d", &num1);
int x1, x2, x3, x4;
x1 = num1 / 1000;
x2 = num1 / 100 %2 ;
x3 = num1 / 10 %2;
x4 = num1 % 2;
int result;
result = 8 * x1 + 4 * x2 + 2 * x3 + 1 * x4;
printf("10진수 : %d", result);
}

'# 개발 > C언어' 카테고리의 다른 글
c언어 연습문제 #4 (국비6일차) (0) | 2023.01.06 |
---|---|
c언어 #5 - 제어문(if, switch,for,while,break,continue) (국비6일차) (0) | 2023.01.06 |
c언어 #4 - 상수, 연산자 (국비5일차) (0) | 2023.01.05 |
c언어 연습문제 #2 (국비4일차) (0) | 2023.01.04 |
c언어 #3 - 변수, scanf (국비4일차) (0) | 2023.01.04 |