728x90
C / 정보처리기사 실기 문제 풀이 1
1.
#include <stdio.h>
main() {
char *p="KOREA";
printf("%s\n",p+3);
printf("%c\n",*p+2);
}
printf("%s\n", p+3) : EA
%s는 해당 문자열부터 끝까지 출력. p 포인터가 가리키는 주소에서 3칸 뒤부터 끝까지 출력
printf("%c\n", *p+2) : M
%c 는 한글자만 출력. *p는 'K'이고 여기에 +2는 'K'에 ASCII 값 2를 더함
ASCII 값은 알파멧 순서이므로 2칸 뒤인 'M'이 출력
2.
#include <stdio.h>
struct jsu {
char name[12];
int os, db, hab, hhab;
};
int main(){
struct jsu st[3] = {{"데이터1", 95, 88},
{"데이터2", 84, 91},
{"데이터3", 86, 75}};
struct jsu* p;
p = &st[0];
(p + 1)->hab = (p + 1)->os + (p + 2)->db;
(p + 1)->hhab = (p+1)->hab + p->os + p->db;
printf("%d\n", (p+1)->hab + (p+1)->hhab);
}
struct jsu로 구조체 배열을 name, os, db, hab, hhab 순서로 생성한다
p = &st[0] 는 {"데이터1", 95, 88}의 주소이므로 (p + 1)는 {"데이터2", 84, 91}
->기호로 구조체 배열 이름을 찾아가서 더해주면 된다
name | os | db | hab | hhab |
데이터1 | 95 | 88 | ||
데이터2 | 84 | 91 | 84+75=159 | 159+95+88=342 |
데이터3 | 86 | 75 |
(p+1)->hab + (p+1)->hhab : 159 + 342 = 501 이므로 501 출력
728x90
'Programming > C' 카테고리의 다른 글
C / 정보처리기사 실기 문제 풀이 2 - 스택(STACK) (0) | 2021.05.16 |
---|
댓글