게시판
검색 결과: 17
맞게 풀이했습니다.
다만, 전체 코드 제출이 아니라 부분 완성형 문제입니다.
따라서 부분 코드만 제출해야 합니다.
빈 칸에 해당하는 코드만 제출하면 심사를 통과할 수 있습니다.
prog.c: In function ‘main’: prog.c:12:9: error: ‘balalnce’ undeclared (first use in this function) balance=balalnce-450; ^~~~~~~~두 번째 시도를 보면 이 문제는 해결한 것으로 보입니다.
prog.c: In function ‘main’: prog.c:16:1: error: expected ‘;’ before ‘balance’ balance=balance-1200; ^~~~~~~두 번째 시도에서는 ;에 문제가 있다는 뜻입니다.
if(age>=7 && age<=12)
balance=balance-450;
else if(age>=13 && age<=18)
balance=balance-720;
else if(age>=19)
balance=balance-1200;
초기화되지않은 지역변수 balance값을 사용했다고 뜹니다. 이게 왜그런지 모르겠습니다 처음에 10000으로 초기화가 되어있는데 여기서 어떤 문법이 틀렸는지도 모르겠습니다 사이트에서는 balance앞에;가 선언되어야한다는 이상한소리를합니다. {balance=balance-요금;} 으로 해도 똑같습니다 balance-=요금;으로해야 올바르게 나옵니다.
문제의 입력
20
에 대해서 출력은
8800
입니다.
문의한 코드의 출력은
88008800
입니다.
교통카드 잔액이 10000원이면 제출한 코드는 8800만원 8800원을 충전해주는 코드가 됩니다.
문제는 printf가 끝에 있습니다. 조건문마다 printf를 반복하는 것은 비효율적입니다.
else는 생략할 수 있습니다. else는 지정한 조건 외에 나머지를 처리하기 위한 것입니다. 필요한 경우에 쓰면 됩니다.
if (age >= 7 && age <= 12)
{
printf("%d", balance -= 450);
}
else if (age >= 13 && age <= 18)
{
printf("%d", balance -= 720);
}
else if (age >= 19)
{
printf("%d", balance -= 1200);
}
visual studio에서는 돌아가는데 심사문제 통과가 안되네요
어디가 틀린거죠?
그리고 if문에서 if랑 else if랑 같이 쓰면서 else로 끝나지 않아도 괜찮나요?
부분 완성형 문제입니다. 문제 풀이에 필요한 부분 코드만 제출해야 합니다.
UNIT 19.5 심사 문제에서 제시된 코드를 보면
printf("%d\n", balance);
return 0;
}
변수 balance를 출력하는 부분이 고정되어 있습니다.
잔액을 차감한 값을 변수에 저장하지 않으면 차감된 잔액이 반영되지 않으니까 그 교통카드는 일종의 무한카드가 됩니다.
그런 일이 발생하지 않으려면 차감한 금액을 balance 변수에 다시 저장해야 합니다. 심사문제가 뒤에 printf 출력문을 고정으로 둔 이유입니다.
문제만 통과하기 위해 "balance - 금액"만 출력하는 잘못된 코딩 습관은 심사문제를 통과할 수 없게 하기 위해서입니다.
19.5가 아니라 18.10이군요!
심사 문제는 텍스트 일치로만 판단합니다.
"각 점수를 입력하세요" 같은 안내 문구가 있으면 안 됩니다.
프로그램을 실행했을 때
95 80 87 82
합격
이렇게만 화면이 구성되어야 합니다. 볼드는 사용자가 입력하거나 심사 문제가 입력하는 부분입니다.
안내 문구가 있으면 텍스트가 불일치하니까 통과할 수 없습니다.