열혈 c프로그래밍 문제 08-1
문제 3.
*학생의 전체 평균점수에 대한 학점을 출력하는 프로그램을 작성하는 문제이다.
성적이 90이면 A, 80이면 B...... 계속 50 미만 일시 F이다.
프로그램 실행시 순서대로 과목 1 과목 2 과목 3 점수를 입력받아야 하고, 그리고 평균을 구한후 그에 적절한 학점을 출력해야 하는 문제이다.
<틀린 이유>
*내 첫 번째 풀이는 점수를 score라 선언하고 각 과목을 K, E, M으로 각각 선언하였다. 처음 문제를 풀 때 순서대로 라는 말에 for문을 사용해 과목이 3과목이니 3회 반복하여야겠다는 생각을 하였고, for문안에 if문을 사용해 문제를 접근하려 했으나 각 과목 K, E, M에 대한 값을 출력받기가 어려워서 풀지 못하였다.
*반복문은 "문자열 'Hello world'를 출력 하는 printf함수 호출 문을 총 열 번 실행해 주세요"의 형태의 명령을 내릴 때 사용하는 것이라 한다.
그러므로 위 문제에서 반복문은 어울리지 않다.
<오답 풀이>
순서대로 과목의 점수를 입력받는다. 는 printf와 scanf_s를 통해서 코드를 작성할 수 있다. 그리고 평균의 값이 출력되게끔 하고 그 평균에 대한 if.. else if... else.. 문을 사용하여 만족되는 평균값 조건에 따른 학점 표기가 출력이 될 수 있게 하면 된다.
<추가>
첫 오답 풀이에서 if((90>=x)&&(x>=80))라고 코드를 작성하였는데 그 이유는 80점 이상이라 하면 93점도 이에 해당하고 그렇게 되면 문장에서 if(90점 이상)과 겹쳐 문장이 이상해지지 않을까 라는 생각을 하여 위와 같이 작성하였다.
그런데 93점 혹은 90점 이상이면 if(90점 이상)의 조건에서 실행이 되니! if(x>80)으로 문장을 작성하여도 된다.
<추가 2>
*for( ; ; )
{
} 중괄호 가 끝이나고 ;을 붙여야 하나 생각 했는데 붙이지 않아도 된다.
*while문도 for문과 마찬가지로
while(조건)
{
}중괄호 가 끝이 나고 세미콜론을 붙이지 않아도 된다.
*do while문은 for, while문과는 다르게
do
{
} while(조건); 중괄호가 끝나고 while(조건)이 붙은 후에 ;을 붙여줘야 출력 값이 나온다.