본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.7] 영어 수강 대상자 수 구하기 / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 6.
반응형

영어 수강 대상자 수 구하기


문제설명

 

조건 : 토익시험 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);
}

cos pro 2급 기출문제

github

반응형

댓글