코드업 C언어 기초 100제 - [기초-선택실행구조]

6720·2022년 12월 5일
0

CodingTest(코드업)

목록 보기
12/13
post-thumbnail

👨‍🏫 이번 목표

코드업 C언어 기초 100제에서 [기초-선택실행구조] 풀기

📒 문제 풀이

1065번

세 정수 a, b, c가 입력되었을 때, 짝수만 출력해보자.

(세 정수가 공백을 두고 입력되며, 적어도 하나는 짝수이다. 그리고 짝수를 줄을 바꿔 출력한다.)

  • 내가 쓴 답
#include <stdio.h>

int main() {
  int i, j, k;
  scanf("%d %d %d", &i, &j, &k);
  if (i % 2 == 0) printf("%d\n", i);
  if (j % 2 == 0) printf("%d\n", j);
  if (k % 2 == 0) printf("%d\n", k);
  return 0;
}
  • 정답 여부: O



1066번

세 정수 a, b, c가 입력되었을 때, 짝(even)/홀(odd)을 출력해보자.

(세 정수가 공백을 두고 입력되며, 입력된 순서대로 짝(even)/홀(odd)을 줄을 바꿔 출력한다.)

  • 내가 쓴 답
#include <stdio.h>

int main() {
  int i, j, k;
  scanf("%d %d %d", &i, &j, &k);
  if (i % 2 == 0) printf("%s\n", "even"); else printf("%s\n", "odd");
  if (j % 2 == 0) printf("%s\n", "even"); else printf("%s\n", "odd");
  if (k % 2 == 0) printf("%s\n", "even"); else printf("%s\n", "odd");
  return 0;
}
  • 정답 여부: O



1067번

정수 1개가 입력되었을 때, 음(minus)/양(plus)과 짝(even)/홀(odd)을 출력해보자.

(첫 줄에 minus나 plus를 출력하고, 두 번째 줄에 odd나 even을 출력한다. )

  • 내가 쓴 답
#include <stdio.h>

int main() {
  int i;
  scanf("%d", &i);
  if (i >= 0) printf("%s\n", "plus"); else printf("%s\n", "minus");
  if (i % 2 == 0) printf("%s\n", "even"); else printf("%s\n", "odd");
  return 0;
}
  • 정답 여부: O



1068번

점수를 입력받아 평가를 출력해보자

(점수의 형태는 0~100의 정수이며, 다음과 같은 범위로 등급을 출력한다.)

90 ~ 100 : A // 70 ~ 89 : B // 40 ~ 69 : C // 0 ~ 39 : D

  • 내가 쓴 답
#include <stdio.h>

int main() {
  int i;
  scanf("%d", &i);
  if (i >= 90) printf("%s", "A");
  else if (i >= 70) printf("%s", "B");
  else if (i >= 40) printf("%s", "C");
  else printf("%s", "D");
  return 0;
}
  • 정답 여부: O



1069번

평가를 문자로 입력받아 내용을 다르게 출력해보자

(문자의 형태는 A, B, C, D, 그 외의 문자이며, 다음과 같은 기준으로 내용을 출력한다.)

A: best!!! // B: good!! // C: run! // D: slowly~ // 나머지 문자들: what?

  • 내가 쓴 답
#include <stdio.h>
#include <string.h>

int main() {
  char i;
  scanf("%s", &i);
  if (strcmp(i, "A")) printf("%s", "best!!!");
  else if (strcmp(i, "B")) printf("%s", "good!!");
  else if (strcmp(i, "C")) printf("%s", "run!");
  else if (strcmp(i, "D")) printf("%s", "slowly~");
  else printf("%s", "what?");
  return 0;
}
  • 정답 여부: X -> signal segmentation fault (core dumped)

strcmp는 안에 들어가는 문자열의 타입을 const char*로 선언해줘야 함.
거기에 비교하려는 문자 또한 타입변환을 해줘야 함.
거기에 strcmp에서 두 문자열이 같으면 0이 나오므로 if 문에서 사용할 때는 조건문을 확실히 정해줘야 함.
scanf에서 문자열을 입력받을 때는 &가 필요없음.

...으로 풀었음에도 불구하고 도저히 답이 안나옴.
그래서 포기하고 답을 보니깐..

#include <stdio.h>

int main() {
  char i;

  scanf("%s", &i);
  switch(i) {
    case 'A':
      printf("%s", "best!!!");
      break;
    case 'B':
      printf("%s", "good!!");
      break;
    case 'C':
      printf("%s", "run!");
      break;
    case 'D':
      printf("%s", "slowly~");
      break;
    default:
      printf("%s", "what?");
      break;
  }
  return 0;
}

... 하진짜 바보멍청이야 ㅁ아러미ㅏ러미ㅏ러



1070번

월이 입력될 때 계절 이름이 출력되도록 해보자.

  • 내가 쓴 답
#include <stdio.h>

int main() {
  int i;

  scanf("%d", &i);
  switch(i) {
    case 12:
    case 1:
    case 2:
      printf("%s", "winter");
      break;
    case 3:
    case 4:
    case 5:
      printf("%s", "spring");
      break;
    case 6:
    case 7:
    case 8:
      printf("%s", "summer");
      break;
    case 9:
    case 10:
    case 11:
      printf("%s", "fall");
      break;
  }
  return 0;
}
  • 정답 여부: O



✨ 후기

1)

strcmp와 strncmp
strcmp: 문자열을 비교해줌.
strncmp: 문자열을 비교해주는데 매개변수로 비교할 문자열 길이도 받음.

int strcmp(const char* str1, const char* str2);
int strncmp(const char* str1, const char* str2, size_t n);

대소문자 구분이 가능하며, 대소 비교가 가능함. → 각 문자를 아스키 코드로 비교하기 때문임.

첫 번째 문자열이 작으면 음수 반환
첫 번째 문자열이 크면 양수 반환
서로 같은 경우에는 0 반환

*헤더파일은 string.h임.

2) 답은 생각보다 가까이 있다.

profile
뭐라도 하자

0개의 댓글