안녕하세요 길벗수험서 운영팀입니다.
[1]
예, 동일하게 적용이 가능하며, java의 향상된 for문과는 별개입니다.
for문 내의 각 식들은 세미콜론(;)으로 구분되는 별개의 식으로 콤마(,)를 부여하여 여러 식을 중첩하여 넣는 것이 가능합니다.
이는 for문만이 아닌 일반 식에서도 사용이 가능합니다.
int a, b;
a = 0, b = 3;
이런 식으로 말이죠.
[2]
예, Java에서는 true, C에서는 1을 '참'으로 인식합니다.
만약 서로 다른 예약어를 사용하고 싶다면(예를 들어 C에서 true를 쓴다거나 Java에서 1을 쓰는 등) 앞에서 미리 선언하거나, 관련 정의가 첨부된 외부파일을 로딩해야 합니다.
[3]
전자가 맞습니다.
콤마(,)로 구분된 식은 서로 별개의 식입니다.
해당 식을 일반 식으로 표현하자면,
i++;
p+=i;
와 동일하죠.
전치수식과 후치수식이 영향을 줄 수 없는 관계입니다.
[4]
Java에서도 char배열을 생성하여 처리하면 C와 동일하게 NULL문자가 부여됩니다.
이는 String에서도 마찬가지입니다.
String은 사용자가 문자열을 처리하는 것을 편리하도록 도와줄 뿐, 처리과정은 char배열로 처리하는 것과 동일합니다.
그렇다고 String.length로 문자길이를 찍는다고 하여 널문자까지 개수를 세지는 않습니다. 자동으로 널을 누락한 문자의 개수만을 출력하죠. 단순히 문자열을 처리하는 과정이 char배열을 사용하는 것과 동일하다는 이야기 입니다.
[5]
예, 문자열의 마지막에는 널문자가 없으면 오류가 발생합니다.
출력시 문자열의 길이를 고려하여 출력문을 설정한다면 상관 없으나, 기본적인 문자열 입력방식을 이용하면 널문자가 들어가게 되어 있죠.
자바의 해당 string 선언문을 c의 char배열로 바꾼다면,
char *a[6];
a[0] = "Seoul";
a[1] = "Incheon";
a[2] = "Kyonggi";
a[3] = "Daejun";
a[4] = "Daegu";
a[5] = "Pusan";
이렇게 사용이 가능하겠네요.
각 a[0]~a[5]의 마지막 글자 다음에는 널이 들어가게 됩니다.
[6]
예, 맞습니다.
해당 위치에는 서식문자열은 %c가 더 적합하네요.
다만 char배열의 특정 요소([0]과 같이 단 한 개의)를 출력할 때는 %s를 써도 %c와 동일하게 출력되므로 틀린 것은 아닙니다.
(C에서는 오류가 발생합니다. Java에서만 가능합니다.)
[7]
이건 char이라는 자료형에 대한 설명이 필요하겠네요.
우리가 문자로 저장하는 char형은 사실 문자형 같지만, 컴퓨터에 저장되는 값은 정수형과 동일합니다.
즉 'A'라는 문자를 저장하면, 'A' 아스키값인 65가 저장되게 되어 있죠.
때문에 해당 문제와 같이 A,B,C~ 를 인수로 보낼 때 실제 전송되는 값은 65, 66, 67이 전송되어 처리된 후, pop()함수에서 출력될 때 "%c"를 만나 문자로 출력되는 것입니다.
int a = 65를 선언한후, printf("%c", a)를 하게 되면 A가 출력되는 것으로 쉽게 확인해 볼 수 있습니다.
[8]
곱셈, 나눗셈 기호의 경우 문제나 <처리조건> 또는 순서도의 다른 위치에 명시된 대로 적어주시고, 만약 어느곳도 없다면 무엇을 써도 상관 없습니다.
[9]
괄호()를 사용하지 않아도 연산순서에 문제가 없는 경우는 사용하지 않으셔도 관계없습니다.
163쪽의 경우 단순히 수험자분들이 편하게 구분하시라고 괄호를 적은 것일 뿐 해당 정답의 경우 ()를 제외해도 문제는 없습니다.
행복한 하루되세요 :)
-
관리자2019-05-21 15:26:32
안녕하세요 길벗수험서 운영팀입니다.
[1]
예, 동일하게 적용이 가능하며, java의 향상된 for문과는 별개입니다.
for문 내의 각 식들은 세미콜론(;)으로 구분되는 별개의 식으로 콤마(,)를 부여하여 여러 식을 중첩하여 넣는 것이 가능합니다.
이는 for문만이 아닌 일반 식에서도 사용이 가능합니다.
int a, b;
a = 0, b = 3;
이런 식으로 말이죠.
[2]
예, Java에서는 true, C에서는 1을 '참'으로 인식합니다.
만약 서로 다른 예약어를 사용하고 싶다면(예를 들어 C에서 true를 쓴다거나 Java에서 1을 쓰는 등) 앞에서 미리 선언하거나, 관련 정의가 첨부된 외부파일을 로딩해야 합니다.
[3]
전자가 맞습니다.
콤마(,)로 구분된 식은 서로 별개의 식입니다.
해당 식을 일반 식으로 표현하자면,
i++;
p+=i;
와 동일하죠.
전치수식과 후치수식이 영향을 줄 수 없는 관계입니다.
[4]
Java에서도 char배열을 생성하여 처리하면 C와 동일하게 NULL문자가 부여됩니다.
이는 String에서도 마찬가지입니다.
String은 사용자가 문자열을 처리하는 것을 편리하도록 도와줄 뿐, 처리과정은 char배열로 처리하는 것과 동일합니다.
그렇다고 String.length로 문자길이를 찍는다고 하여 널문자까지 개수를 세지는 않습니다. 자동으로 널을 누락한 문자의 개수만을 출력하죠. 단순히 문자열을 처리하는 과정이 char배열을 사용하는 것과 동일하다는 이야기 입니다.
[5]
예, 문자열의 마지막에는 널문자가 없으면 오류가 발생합니다.
출력시 문자열의 길이를 고려하여 출력문을 설정한다면 상관 없으나, 기본적인 문자열 입력방식을 이용하면 널문자가 들어가게 되어 있죠.
자바의 해당 string 선언문을 c의 char배열로 바꾼다면,
char *a[6];
a[0] = "Seoul";
a[1] = "Incheon";
a[2] = "Kyonggi";
a[3] = "Daejun";
a[4] = "Daegu";
a[5] = "Pusan";
이렇게 사용이 가능하겠네요.
각 a[0]~a[5]의 마지막 글자 다음에는 널이 들어가게 됩니다.
[6]
예, 맞습니다.
해당 위치에는 서식문자열은 %c가 더 적합하네요.
다만 char배열의 특정 요소([0]과 같이 단 한 개의)를 출력할 때는 %s를 써도 %c와 동일하게 출력되므로 틀린 것은 아닙니다.
(C에서는 오류가 발생합니다. Java에서만 가능합니다.)
[7]
이건 char이라는 자료형에 대한 설명이 필요하겠네요.
우리가 문자로 저장하는 char형은 사실 문자형 같지만, 컴퓨터에 저장되는 값은 정수형과 동일합니다.
즉 'A'라는 문자를 저장하면, 'A' 아스키값인 65가 저장되게 되어 있죠.
때문에 해당 문제와 같이 A,B,C~ 를 인수로 보낼 때 실제 전송되는 값은 65, 66, 67이 전송되어 처리된 후, pop()함수에서 출력될 때 "%c"를 만나 문자로 출력되는 것입니다.
int a = 65를 선언한후, printf("%c", a)를 하게 되면 A가 출력되는 것으로 쉽게 확인해 볼 수 있습니다.
[8]
곱셈, 나눗셈 기호의 경우 문제나 <처리조건> 또는 순서도의 다른 위치에 명시된 대로 적어주시고, 만약 어느곳도 없다면 무엇을 써도 상관 없습니다.
[9]
괄호()를 사용하지 않아도 연산순서에 문제가 없는 경우는 사용하지 않으셔도 관계없습니다.
163쪽의 경우 단순히 수험자분들이 편하게 구분하시라고 괄호를 적은 것일 뿐 해당 정답의 경우 ()를 제외해도 문제는 없습니다.
행복한 하루되세요 :)