[C] CodeUp 1120~1128번 문제풀이.
[1120] 세 수의 평균
[입력] 세 정수가 입력된다.
[출력] 세 수의 평균을 소수 둘째자리까지 출력하시오.
[입력 예시] 1 2 3
[출력 예시] 2.00
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
float num = 0;
float temp = 0;
for (int i = 0; i < 3; i++) {
scanf("%f", &num);
temp += num;
}
printf("%.2f", temp / 3);
return 0;
}
[1121] 나머지 구하기
[입력] 두 정수 a, b를 입력받는다.
a는 피제수, b는 제수를 나타낸다.
[출력] 나머지를 출력한다.
[입력 예시] 7 5
[출력 예시] 2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int num[2] = {};
scanf("%d %d", &num[0], &num[1]);
printf("%d", num[0] % num[1]);
return 0;
}
[1122] 초를 분/초로 변환
[입력] 초가 입력된다.(자연수)
[출력] 분, 초 순서로 출력한다.
[입력 예시] 70
[출력 예시] 1 10
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int count = 0;
int num = 0;
scanf("%d", &num);
while (num >= 60) {
count += 1;
num -= 60;
}
printf("%d %d", count, num);
return 0;
}
[1123] 섭씨 온도를 화씨 온도로 변환
[입력] 섭씨 온도가 입력된다. (정수)
[출력] 화씨온도를 소수 셋째자리 까지 출력한다. (실수)
[입력 예시] 30
[출력 예시] 86.000
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
float num = 0;
scanf("%f", &num);
num = 1.8 * num + 32;
printf("%.3f", num);
return 0;
}
[1124] 분자량 구하기 1
[입력] 화학식이 CxHy 꼴로 입력된다. (1<=x,y<=100)
x,y=1인 경우에도 1을 표시한다.
예) C1H1
[출력] 분자량을 출력한다.
[입력 예시] C3H8
[출력 예시] 44
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define C 12
#define H 1
//문자열끝은 '\0' 문자열 숫자로 만들기는 -'0'
int main(void) {
int c_num = 0, h_num = 0;
int temp = 0;
char arr[10];
scanf("%s", arr);
for (int i = 1; arr[i] != '\0'; i++) {
if (arr[i] < '0' || arr[i]>'9') {
c_num = temp;
temp = 0;
}
else {
temp *= 10;
temp += arr[i] - '0';
}
}
h_num = temp;
printf("%d", (C * c_num) + (H * h_num));
return 0;
}
입력 양식이 C3H8이 들어온다고 했을 때 문자와 숫자를 구분해야겠구나 하고 이렇게 코드를 길게 짰다..
그러나 C와 H가 고정적인 자리로만 들어온다면 이렇게 짤 필요가 없다는 걸 모범답안을 보고 깨달았다..ㅠㅠ
아래는 모범답안이다.
#include <stdio.h>
int main(){
int a, b;
scanf("C%dH%d", &a, &b);
printf("%d", a*12+b);
return 0;
}
[1125] 8진수 16진수 변환
[입력] 10진수 정수 하나가 입력된다.
[출력] 8진수와 16진수를 차례대로 출력한다.
(16진수는 대문자 출력)
[입력 예시] 10
[출력 예시] 12 A
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int num = 0;
scanf("%d", &num);
printf("%o %X", num,num);
return 0;
}
[1126] 정수 계산기
[입력] 두 정수 a, b를 공백으로 분리하여 입력한다.
[출력] 다음 형식으로 출력한다. c, d, e, f, g에 해당되는 수는 실제 계산 결과를 의미한다.
a + b = c
a – b = d
a * b = e
a / b = f
a % b = g
[입력 예시] 5 2
[출력 예시]
5 + 2 = 7
5 – 2 = 3
5 * 2 = 10
5 / 2 = 2
5 % 2 = 1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int num1 = 0, num2 = 0;
scanf("%d %d", &num1, &num2);
printf("%d + %d = %d \n", num1, num2, num1 + num2);
printf("%d - %d = %d \n", num1, num2, num1 - num2);
printf("%d * %d = %d \n", num1, num2, num1 * num2);
printf("%d / %d = %d \n", num1, num2, num1 / num2);
printf("%d %% %d = %d", num1, num2, num1 % num2);
return 0;
}
[1127] 성적 계산
[입력] ① 반영 비율과 받은 점수를 입력한다.
② 입력 순서는 중간고사 반영비율, 중간고사 점수, 기말고사 반영비율, 기말고사 점수, 수행평가 반영비율, 수행평가 점수 순이다.
③ 반영비율은 실수형, 각 점수는 정수형으로 입력한다.
[출력] 결과를 실수로 출력하되 소수 첫째 자리까지 출력한다.
[입력 예시]
0.3 50
0.4 80
0.3 92
[출력 예시] 74.6
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
typedef struct {
float reflected_ratio;
int score;
}mystruct;
int main(void) {
mystruct info[3] = {0,};
for (int i = 0; i < 3; i++) {
scanf("%f %d", &info[i].reflected_ratio, &info[i].score);
}
printf("%.1f",
(info[0].reflected_ratio * info[0].score) +
(info[1].reflected_ratio * info[1].score) +
(info[2].reflected_ratio * info[2].score));
return 0;
}
[1128] n * 123456789
[입력] 정수 n이 입력된다.(0<=n<=100)
[출력] n×123456789 의 결과를 출력한다.
[입력 예시] 1
[출력 예시] 123456789
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int arr[] = {0,0,1,2,3,4,5,6,7,8,9};
int num = 0;
int print_index = 0;
scanf("%d", &num);
for (int i = 2; i <= 10; i++) {
arr[i] *= num;
}
for (int i = 10; i >= 0; i--) {
if (arr[i] >= 100) {
arr[i - 2] += arr[i] / 100;
arr[i] %= 100;
}
if (arr[i] >= 10) {
arr[i - 1] += arr[i] / 10;
arr[i] %= 10;
}
}
if (arr[print_index] == 0) {
print_index++;
if (arr[print_index] == 0) {
print_index++;
}
}
for (; print_index <= 10; print_index++) {
printf("%d", arr[print_index]);
}
return 0;
}
이 문제에서는 long, double, float이 금지키워드였다.
그래서 당연히 lld도 쓰면 안되는 건 줄 알고 이렇게 배열을 사용해서 복잡하게 풀어놨는데..
모범 답안을 보니 아니였다. -_- 변수 선언만 안되는 것이였을 뿐 printf 에서는 lld를 사용해도 되는 것 이었다..
아래는 모범소스이다.
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
printf("%lld",n*123456789LL);
}
댓글남기기