반응형
영어 수강 대상자 수 구하기
문제설명
조건 : 토익시험 650점 이상 800점 미만의 성적을 취득한 학생만 강의를 들을 수 있습니다.
초급 영어 강의에 수강 신청한 사람이 10명일 때, 이 중에서 몇명이 수강 대상애 해당하는지 확인하려 합니다. 수강 신청자들의 토익 성적이 들어있는 배열 scores와 scores의 길이 scores_len이 매개변수로 주어질 때 수강 대상자들의 인원수를 return하도록 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에 올바르게 동작하지 않으므로 한 줄만 변경해서 올바르게 동작하도록 수정하세요.
예시
scores | scores_len | return |
{650, 722, 914, 558, 714, 803, 650, 679, 669, 800} | 10 | 6 |
수정해야할 코드
더보기
int solution(int scores[], int scores_len) {
int count = 0;
for (int i = 0; i < scores_len; i++)
if (650 <= scores[i] || scores[i] < 800)
count += 1;
return count;
}
수정
if (650 <= scores[i] || scores[i] < 800)
if (650 <= scores[i] && scores[i] < 800)
논리 연산자 | |
|| | 하나라도 참이면 참 모두 거짓일 경우에만 거짓 |
&& | 하나라도 거짓이면 거짓 모두 참일 경우에만 참 |
||은 한가지 조건만 참이면 if문을 수행하고
&&은 두가지 조건 모두 참이여야지만 if문을 수행한다.
그래서 || 사용 시 모든 값들이 참이 되기 때문에 코드가 정상적으로 돌아가지 않는다.
|| 사용 시
650 | 722 | 914 | 558 | 714 | 803 | 650 | 679 | 669 | 800 |
O | O | O | O | O | O | O | O | O | O |
&& 사용 시
650 | 722 | 914 | 558 | 714 | 803 | 650 | 679 | 669 | 800 |
O | O | X | X | O | X | O | O | O | X |
전체 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int scores[], int scores_len) {
int count = 0;
for (int i = 0; i < scores_len; i++)
if (650 <= scores[i] && scores[i] < 800)
count += 1;
return count;
}
int main() {
int scores[10] = { 650, 722, 914, 558, 714, 803, 650, 679, 669, 800 };
int scores_len = 10;
int ret = solution(scores, scores_len);
printf("The return value of solution function %d \n", ret);
}
반응형
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.9] 중복 문자 삭제하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.07 |
---|---|
[No.8] 팰린드롬 판단하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.06 |
[No.6] 369 게임 박수의 개수는? / cos pro 2급 c언어 기출 문제 (0) | 2021.05.05 |
[No.5] 배열의 순서 뒤집기 / cos pro 2급 c언어 기출 문제 (3) | 2021.05.05 |
[No.4] 등장하는 가장 많은 수와 적은 수 구하기 / cos pro 2급 c언어 기출 문제 (4) | 2021.05.03 |
댓글