728x90
SMALL

1. 다음은 MySQL을 이용하여 회사 사원의 인적 사항을 관리하기 위한 DB 테이블(테이블명 : worker)의 구조이다.

필드명 데이터형 null 추가 사항 설명
num int not null primary key, auto_increment 일련번호
id char(20) not null   아이디
name char(10) not null   이름
gender char(1) not null   성별(남성: M, 여성 : F)
age int not null   나이
department char(20) not null   근무 부서
phone char(20) not null   휴대전화 번호
address char(100)     집 주소

 

① worker 테이블을 일괄 생성하기 위한 worker.sql 파일의 빈칸을 채우시오.

create (가) worker (
     num int not null (나),
     id char(20) not null,
     name char(10) not null,
     (다) char(1) not null,
     age int,
     department char(20) not null,
     phone char(20) not null,
     (라) char(100),
     primary key ( 마 )  );

② worker 테이블에 다음 데이터를 삽입하는 명령을 쓰시오.

chkim, 김창훈, M, 28, 총무부, 010-3838-8577, 경기도 용인시

③ worker 테이블의 구조를 보는 데 사용하는 명령을 쓰시오.

④ worker  테이블에 존재하는 모든 레코드의 모든 필드를 보여주는 명령을 쓰시오.

더보기

(가) : table

(나) : auto_increment

(다) : gender

(라) : address

(마) : num

 

② insert into worker (id, name, gender, age, department, phone, address) values ('chkim', '김창훈', 'M', 28, '총무부', '010-3838-8577', '경기도 용인시');

③ desc worker;

④ select*from worker;


2. 1번 문제에서 생성한 worker 테이블에 다음 표의 사원 데이터 필드를 일괄 실행하기 위한 파일을 작성하여 insert.sql로 저장하고 이를 phpMyAdmin에서 실행하시오.

id name gender age department phone address
jhjang 장종훈 M 38 총무부 010-3347-7474 서울시 강동구
jek98 안달훈 M 25 인사부 010-3744-4747 강원도 정선군
Ims2 이세영 F 48 경리부 010-3736-4784 전라북도 전주시
apple3 김소영 F 52 총무부 010-2845-8978 전라남도 순천시
sub093 김수정 M 53 홍보부 010-3834-1248 경상북도 상주시
chulsu 김철수 M 23 홍보부 010-1235-3788 경기도 오산시
yckim 김영철 M 32 인사부 010-2222-3334 경기도 용인시
yerin99 김예린 F 25 총무부 010-7777-9999 서울시 강서구
sjjung 정수정 F 35 경리부 010-3636-3563 충청남도 아산시
tuttle7 이예린 F 21 연구소 010-3756-9823 경기도 성남시
더보기

insert into worker (id, name, gender, age, department, phone, address) values ('jhjang', '장종훈', 'M', 38, '총무부', '010-3347-7474', '서울시 강동구');

insert into worker (id, name, gender, age, department, phone, address) values ('jek98', '안달훈', 'M', 25, '인사부', '010-3744-4747', '강원도 정선군');

insert into worker (id, name, gender, age, department, phone, address) values ('Ims2', '이세영', 'F', 48, '경리부', '010-3736-4784', '전라북도 전주시');

insert into worker (id, name, gender, age, department, phone, address) values ('apple3', '김소영', 'F', 52, '총무부', '010-2845-8978', '전라남도 순천시') ;

insert into worker (id, name, gender, age, department, phone, address) values ('sub093', '김수정', 'M', 53, '홍보부', '010-3834-1248', '경상북도 상주시');

insert into worker (id, name, gender, age, department, phone, address) values ('chulsu', '김철수', 'M', 23, '홍보부', '010-1235-3788', '경기도 오산시');

insert into worker (id, name, gender, age, department, phone, address) values ('yckim', '김영철', 'M', 32, '인사부', '010-2222-3334', '경기도 용인시');

insert into worker (id, name, gender, age, department, phone, address) values ('yerin99', '김예린', 'F', 25, '총무부', '010-7777-9999', '서울시 강서구');

insert into worker (id, name, gender, age, department, phone, address) values ('sjjung', '정수정', 'F', 35, '경리부', '010-3636-3563', '충청남도 아산시');

insert into worker (id, name, gender, age, department, phone, address) values ('tuttle7', '이예린', 'F', 21, '연구소', '010-3756-9823', '경기도 성남시');


3. 2번 문제에서 입력한 사원 데이터를 검색하는 SQL 명령에 관한 물음에 답하시오.

① 홍보부에서 근무하는 사원의 모든 필드를 검색하는 명령을 쓰시오.

② 20대(20~29세)인 사원의 아이디, 이름, 집 주소를 검색하는 명령을 쓰시오.

③ 경리부에 근무하는 이름에 '정'이 들어간 사원의 이름, 성별, 근무 부서, 휴대전화 번호를 검색하는 명령을 쓰시오.

④ 경기도에 사는 사원을 나이순으로 오름차순 정렬한 뒤 이름, 집 주소, 성별, 휴대전화 번호를 검색하는 명령을 쓰시오.

⑤ 여성 사원을 나이순으로 내림차순 정렬한 뒤 이름, 성별, 아이디, 휴대전화 번호, 집 주소를 검색하는 명령을 쓰시오.

⑥ 홍보부에서 근무하는 남성 사원의 이름과 휴대전화 번호를 검색하는 명령을 쓰시오.

⑦ 용인시에 사는 사원의 이름과 휴대전화 번호를 검색하는 명령을 쓰시오.

⑧ '김영철'의 휴대전화 번호를 '010-2222-3333'으로 수정하는 명령을 쓰시오.

⑨ 아이디가 'chulsu'인 사원의 나이를 '33'으로 수정하는 명령을 쓰시오.

⑩ 아이디가 'jhjang'인 레코드를 삭제하는 명령을 쓰시오.

⑪ 경리부에서 근무하는 '이세영'의 레코드를 삭제하는 명령을 쓰시오.

더보기

① SELECT num, id, name, gender, age, department, phone, address FROM worker WHERE department='홍보부';

② SELECT id, name, address FROM worker WHERE age>=20 and age<=29;

③ SELECT name, gender, department, phone FROM worker WHERE department='경리부' AND name LIKE '%정%';

④ SELECT name,address, gender, phone FROM worker WHERE address LIKE '경기도%' ORDER BY age;

⑤ SELECT name, gender, id, phone, address FROM worker WHERE gender='F' ORDER BY age DESC;

⑥ SELECT name, phone FROM worker WHERE department='홍보부' AND gender='M';

⑦ SELECT name, phone FROM worker WHERE address LIKE '%용인시';

⑧ UPDATE worker set phone='010-2222-3333' WHERE name='김영철';

⑨ UPDATE worker set age=33 WHERE id='chulsu';

⑩ DELETE from worker WHERE id='jhjang';

⑪ DELETE from worker WHERE name='이세영';


4. 명령 프롬포트에서 mydb 데이터베이스에 저장된 모든 데이터를 mydb.sql 파일에 백업하는 명령을 쓰시오. 계정은 'user', 비밀번호는 '12345'라고 가정한다.

더보기

mysqldump-uuser -p12345 mydb > mydb.sql


5. 4번 문제에서 백업한 mydb.sql 파일을 명령 프롬프트에서 복원하는 명령을 쓰시오.

더보기

mysql -uuser -p12345 mydb < mydb.sql

728x90
LIST
728x90
SMALL

1. 다음은 MySQL에 관한 설명이다. 맞으면 O, 틀리면 X 표시를 하시오.

①MySQL 데이터베이스 관리 시스템의 하나이다. (   )

②주로 대형 서버 컴퓨터에 사용하고 중소 시스템이나 PC에는 잘 사용하지 않는다. (   )

③MySQL은 테이블을 기본 구조로 하는 관계형 데이터베이스 관리 시스템에 속한다. (   )

④PHP로 웹 프로그래밍을 할 때 데이터베이스로 MySQL을 많이 사용한다. (   )

⑤SQL은 데이터베이스를 조회하거나 데이터를 갱신할 수 있는 데이터베이스 표준 언어이다. (   )

⑥phpMyAdmin의 문자셋은 세계 표준인 euc-kr로 설정하는 것이 바람직하다. (   )

⑦MySQL은 처리 속도가 빠르고 성능이 우수한 편이지만 초보자가 익히기 어렵다. (   )

더보기

① O

② X(예전에는 주로 대형 메인 프레임에 DBMS를 적용했지만 요즘은 중소형 시스템과 PC에서도 많이 사용)

O

O

O

X(UTP-8)

X(초보자도 익히기 쉽다)


2. MySQL 데이터베이스에서 DB 테이블을 관리하는 SQL 명령에 관한 물음에 답하시오.

①데이터베이스를 생성하는 명령을 쓰시오.

②DB 테이블명이 member일 때 이 테이블의 구조를 보는 데 사용하는 명령을 쓰시오.

③member 테이블에 age 필드를 int 데이터형으로 추가하는 명령을 쓰시오.

④member 테이블에서 age 필드를 삭제하는 명령을 쓰시오.

⑤member 테이블의 이름을 members로 변경하는 명령을 쓰시오.

⑥member 테이블의 name 필드를 char(20)으로 변경하는 명령을 쓰시오.

더보기

① create table

② desc member

③ alter table member add age int

④ alter table member drop age

⑤ alter table member rename members

⑥ alter talbe member modify name char(20)


3. 다음은 회사 사원의 인적 사항을 관리하기 위한 DB 테이블(테이블명: employee)의 구조이다.

필드명 데이터형 설명
num int 일련번호
id char(20) 아이디
name char(10) 이름
gender char(1) 성별(남성: M, 여성: F)
age int 나이
department char(20) 근무 부서
hp char(20) 휴대전화 번호
address char(100) 집 주소

① employee 테이블을 생성하는 명령의 빈칸을 채우시오.

create table employee(
      num int,
      (가) char(20),
      name char(10),
      gender (나),
      age int
      department char(20),
      (다) char(20),
      address char(100),
      primary key(  (라)  )  );

② employee 테이블의 구조를 보는 데 사용하는 명령을 쓰시오.

③ employee 테이블에 email 필드를 char(30) 데이터형으로 추가하는 명령을 쓰시오.

④ employee 테이블의 이름을 member로 변경하는 명령을 쓰시오.

⑤ age 필드를 삭제하는 명령을 쓰시오.

⑥ employee 테이블을 삭제하는 명령을 쓰시오.

더보기

(가) : id

(나) : char(1)

(다) : hp

(라) : num(웹 사이트에서 회원 가입 양식을 작성할 때 주로 아이디나 일련번호를 사용하여 레코드를 식별한다)

 

② desc employee;

③ alter table employee add email char(30);

④ alter table employee rename member;

⑤ alter table employee drop age;

⑥ drop table employee;

728x90
LIST
728x90
SMALL

[정보처리기사/예상문제] - 2024 정보처리기사 실기 예상 문제 모음

C언어 기출문제 모음

비전공자용 C언어 요약 1탄

비전공자용 C언어 요약 2탄(조건문, 반복문, 배열)

비전공자용 C언어 요약 3탄(함수, 포인터)

비전공자용 C언어 요약 4탄(포인터 심화, 구조체)

 


목차

1. 조건문

2. 반복문

3. 배열


1. 조건문

조건에 맞을 경우 해당 실행문장을 처리하고자 할 때 사용한다

조건문에는 if문과 swtich-case문이 있다.

 

먼저 if문

a>b가 참이면 a=a+b;가 실행이 되고 거짓이면 a=a-b;가 실행된다

아래 예문은a=a+b가 실행이 돼 13이 출력 된다

#include<stdio.h>
int main() {
	int a = 8, b = 5;
	if (a > b)
		a = a + b;
	else
		a = a - b;
	printf("%d\n", a);
	return 0;
}

비트연산자에서 봤듯이 조건문에서도 연산자가 있다. &&, ||

&&는 2개의 조건이 모두 참이어야 참(1)을 반환한다

||는 2개의 조건중 하나만 참이어도 참(1)을 반환한다

 

if외에도 또 다른 조건을 추가하고 싶을 때는 else if를 쓰기도 하고 그냥 if를 더 써주기도 하는데 

if-else if-else의 경우에는 조건문중 해당하는 1개만 실행되는 반면

if-if-if의 경우에는 해당 조건에 맞는 모든 조건문이 전부 실행된다.

#include<stdio.h>
int main() {
	int a = 90;
	int count = 0;
	if (a >= 90)
		count++;
	else if (a >= 80)
		count++;
	else if (a >= 70)
		count++;
	else
		count++;
	printf("%d", count);
	return 0;
}
더보기

출력 : 1

#include<stdio.h>
int main() {
	int a = 90;
	int count = 0;
	if (a >= 90)
		count++;
	if (a >= 80)
		count++;
	if (a >= 70)
		count++;
	printf("%d", count);
	return 0;
}
더보기

출력 : 3

 

switch-case문

switch 키워드 다음 괄호안에 들어가는 num이 무슨 값이냐에 따라 그 해당하는 경우를 실행한다.

break는 조건문을 종료하라는 키워드이고

default는 그냥 else라고 생각하면 된다

#include<stdio.h>
int main() {
	int num = 3;
	switch (num) {
	case 1:
		printf("안녕1");
		break;
	case 2:
		printf("안녕2");
		break;
	case 3:
		printf("안녕3");
		break;

	default : 
		printf("안녕안녕");
		break;
	}


		return 0;
}
더보기

출력 : 안녕3

 

break가 없으면 case3부터 아래 모든 조건문이 다 실행된다

#include<stdio.h>
int main() {
	int num = 3;
	switch (num) {
	case 1:
		printf("k");
	case 2:
		printf("o");
	case 3:
		printf("re");

	default : 
		printf("a");
	}


		return 0;
}
더보기

출력 : rea


2. 반복문

반복문에는 for, while, do-while이 있다

먼저 for문이다

 

i=0가 시작값

i<=5가 조건식

i++이 증가감값

 

i가 0부터 시작해서 i가 5가 될때 까지 i가 1씩 증가하면서 반복해라라는 의미이다

#include<stdio.h>
int main() {

	for (int i = 0; i <= 5; i++) {
		printf("%d", i);
	}
	return 0;
}

위 for문은 따라서 012345가 출력이 된다

 

 

다음은 while문이다

while 오른쪽 괄호에 조건식을 넣어준다

i가 5이하일때까지 반복해라

 

그리고 while문은 증감값을 출력문 아래에 적어준다.

출력결과는 012345이다

#include<stdio.h>
int main() {

	int i = 0;
	while (i <= 5){
		printf("%d", i);
	    i++;
	}
	
	return 0;
}

break를 이용해 해당 조건일 경우 while문이 종료되도록 해줄 수도 있다

아래는 0만 출력된다

#include<stdio.h>
int main() {

	int i = 0;
	while (i <= 5){
		if (i %2==1) break; 
		printf("%d", i);
	    i++;
		
	}
	
	return 0;
}

 

또한 continue라는 키워드를 통해 실행문을 실행하지 않고 건너 뛰라고 할 수도 있다

예를 들어 i==1에서 continue를 만났으면 i==1에서 실행될 예정이었던 모든 구문이 건너뛰기 되고 i==2구문이 시작된다

아래처럼 하면 024가 출력이 된다

#include<stdio.h>
int main() {

	int i = 0;
	while (i <= 5) {
		if (i % 2 == 1) {
			i++;
			continue;
		}
		printf("%d", i);
		i++;
	}
	return 0;
}

 

 

for 문은 반복횟수를 알고 있을 때, while 문은 반복 조건위주에 따라 반복할 때 사용된다.

 

 

마지막으로 do-while문이다

조건에 따라 반복을 계속할지를 결정할 때 사용하는 것은 while 문과 동일한데

조건 중괄호 {} 블럭을 한번 실행하고, 조건을 검사하여 반복을 결정한다

#include<stdio.h>
int main() {

	int i = 0;
	do {
		printf("%d", i);
		i++;
	} while (i <= 5);
	
	return 0;
}

출력결과는 012345이다

 

 

 

반복문이 중첩될 수 도 있다

그것을 중첩반복문이라고 한다.

 

간단한 예시를 보겠다. 

아래는 이중 for문이다.

#include<stdio.h>
int main() {
	int k = 1;
	for (int i = 1; i <= 3; i++) {
		
		for (int j = k; j <= k+2; j++) {
			printf("%d ", j);
		}
		printf("\n");
		k += 3;
	}
	return 0;
}

이중for문에 맨 처음for문은 행, 안쪽은 열이라고 생각하면 된다.

i가 1부터 3까지니까 3행이 생기는 것이다.

j도 k부터 k+2까지니까 3열이 생기는 것이다.

 

i=1일때(즉 1행이 만들어졌을 때) j를 k부터 k+2만큼 반복해라(즉 열을 k에서 k+3만큼 만들어라)

i=2일때(즉 1행이 만들어졌을 때) j를 k부터 k+2만큼 반복해라(즉 열을 k에서 k+3만큼 만들어라)

i=3일때(즉 1행이 만들어졌을 때) j를 k부터 k+2만큼 반복해라(즉 열을 k에서 k+3만큼 만들어라)

 

1행 만들어짐-> 3열 만듦

2행 만들어짐-> 3열 만듦

3행 만들어짐->3열 만듦

 

그래서 위에 이중 for문 출력결과를 생각해보자.


3. 배열

배열은 같은 데이터형 변수를 여러개로 묶어놓은 것이다

관련 있는 데이터를 하나의 변수에 할당하여 관리하기 위해 필요하다

아래와 같이 a[]형태가 배열 선언 형태이고 선언과 동시에 {1,2,3,4,5}로 초기화를 했다.

배열의 인덱스는 0부터 시작한다

a[0]=1

a[1]=2

a[2]=3

a[3]=4

a[4]=5

#include<stdio.h>
int main() {
	int a[5] = { 1,2,3,4,5 };
	for(int i=0;i<5;i++){
		printf("%d", a[i]);
	}
	return 0;
}

출력결과가 무엇일지 생각해보자

더보기

12345

 

포인터를 배울 때 얘기하겠지만 배열의 이름은 배열의 주소이다. 

int a=0; 이라는 변수가 있다고 하면 &a를 해야 a변수의 주소를 가리킬 수 있지만 

배열은 a라는 배열 이름만 있어도 변수의 주소를 가리킬 수 있다

 

 

◆배열에서 문자열

'a', 'A'같은 것을 문자라고 하고 문자가 2개이상 결합된 것을 문자열이라고 하는데 배열에 문자열을 저장할 때는 반드시 문자열의 개수+1의 크기로 선언해야한다

문자열의 마지막에는 \0(널 값)이 추가되기 때문이다.

즉, KOREA로 문자가 5개뿐이지만 널값을 포함해야해서 배열길이를 6개로 해줘야한다. 

널 값이 추가되는 이유는 메모리상에서 문자열은 이진 데이터로 저장되기 때문에 문자열의 시작과 끝이 표시되어 있지 않아 구분하기 위해서 존재한다.

#include<stdio.h>
int main() {
	char a[6] = "KOREA";
	printf("%s", a);
	return 0;
}

%s는 문자열을 받는 서식문자로 a나 &a로 사용 가능하다

a로 써도 되는 이유는 a라는 배열의 이름은 배열의 주소를 가리키기 때문이다

 

#include<string.h>를 추가해준 후 strlen이라는 함수로 a라는 배열안에 문자열길이를 구할 수 있다

5가 출력된다

#include<stdio.h>
#include<string.h>
int main() {
	char a[6] = "KOREA";
	
	printf("%d", strlen(a));  //5
	return 0;
}

위 문제를 토대로 문제를 하나 풀어보자.

#include<stdio.h>
#include<string.h>
int main() {
	char a[6] = "KOREA";
	int b = 0;
	b = strlen(a);
	for (int i = 0; i < b; i++) {
		printf("%c", a[i]);
	}
	return 0;
}
더보기

출력결과 : KOREA

 

 

 

◆2차원 배열

2차원 배열은 말그대로 2차원 배열이다.

배열이 이렇게 1차원이였다면 

2차원 배열은 이런식으로 생각하면된다.

아래 처럼 생각하면 된다 x[][] 이런 형태인데

x는 배열의 이름이고 첫번째 []는 행, 두번째 []는 열이라고 생각하면 된다

보기 편해서 이렇게 보는 것이고 실제로 메모리상에는 나란히 이어져있다.

출처 : c언어 2차원 배열 : 메모리 상에 어떻게 저장이 될까요? (tistory.com)

 

 

아래의 출력결과를 생각해보자.

#include<stdio.h>
int a[5][5];
int main() {
	int i, j, k = 1;
	for (i = 0; i < 5; i++) {
		for (j = 4; j >= 0; j--) {
			a[i][j] = k;
			k++;
		}
	}
	for (i = 0; i < 5; i++) {
		for (j = 0; j < 5; j++) {
			printf("%3d", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

 

 

[정보처리기사/예상문제] - 2024 정보처리기사 실기 예상 문제 모음

C언어 기출문제 모음

비전공자용 C언어 요약 1탄

비전공자용 C언어 요약 2탄(조건문, 반복문, 배열)

비전공자용 C언어 요약 3탄(함수, 포인터)

비전공자용 C언어 요약 4탄(포인터 심화, 구조체)

 

 

 

728x90
LIST
728x90
SMALL

[정보처리기사/예상문제] - 2024 정보처리기사 실기 예상 문제 모음

C언어 기출문제 모음

비전공자용 C언어 요약 1탄

비전공자용 C언어 요약 2탄(조건문, 반복문, 배열)

비전공자용 C언어 요약 3탄(함수, 포인터)

비전공자용 C언어 요약 4탄(포인터 심화, 구조체)

 

 

C언어 공부하기는 싫고 대충이라도 알아야겠다싶으신분만 보세요

찍먹용이라 아주 간단하게만 적혀져 있습니다

대충 읽어보시고 c언어 기출문제 풀어보시면 될 것 같습니다


목차

1. C언어의 구조

2. 변수와 자료형

3. 서식문자

4. scanf()

5. 사칙연산과 증감연산자

6. 비트연산자


1. C언어의 구조

#include<stdio.h>     
	int main() {
		printf("안녕");
		return 0;
	}

1) #include<stdio.h>는 선행처리기라고 하는데 몰라도 된다.

이 문장이 있어야 printf()함수를 쓸 수가 있다.

 

2) int main()

main() 함수인데 자세한 건 몰라도 된다

그냥 main함수 안에 있는 {   }내용물을 제일 첫번째로 보라는 것이다

 

3) printf()

말그대로 printf() 괄호안에 있는 것을 출력하라는 의미이다

 

4) 맨 뒤 ;(세미콜론)

그냥 "밥을 먹었다."할 때 .(마침표)랑 똑같다고 생각하면 된다

 

5) return 0;

함수가 문제없이 종료됐다는 것을 의미한다

그냥 없다고 생각해도 된다


아래 처럼 코드를 작성하면 어떻게 출력될까?

#include<stdio.h>     
	int main() {
		printf("안녕");
		printf("안녕");
		printf("안녕");
		return 0;
	}

그림1

문장이 다르니까 그림1의 왼쪽 처럼 출력될 것 같지만 줄바꿈기능이 없어 오른쪽처럼 안녕안녕안녕으로 출력된다

 

그렇다면 왼쪽 처럼 출력하려면 어떻게 해야할까 

바로 줄바꿈 기호를 넣어주면 된다

#include<stdio.h>     
	int main() {
		printf("안녕\n");
		printf("안녕\n");
		printf("안녕\n");
		return 0;
	}

줄바꿈기호는 \n(역슬래시 n)인데 보통 엔터키 위에 위치한다.

시험에서 낚시문제로 잘 나오므로 \n있나 없나 잘 봐야 한다


2. 변수와 자료형

변수는 데이터를 저장하는 공간이다

a=1이라고하면 a만 나와도 a안에 1이 있다고 생각하면 된다

 

근데 이때 자료형(데이터 타입)마다 변수를 선언하는 키워드(?)가 다르다

정수형 데이터는 int

실수형 데이터는 double

문자형 데이터는 char

표 출처 :  자료형이란? - 한 눈에 끝내는 C언어 기초 (goorm.io)


3. 서식문자

아래와 같이 출력하면 뭐가 출력이 될까?

#include<stdio.h>     
	int main() {
		int a = 3;
		printf("%d", a);
		return 0;
	}

바로 변수 a의 값인 3이 출력된다.

%d가 출력이 되지 않고 3이라고 출력되는 이유는 %d는 서식문자이기 때문이다.

서식문자는 출력하고자 하는 변수의 출력 형태를 지정하기 위해 사용한다

사진 출처 : [C 언어] 서식문자 (변환문자) 의미 자료형 (tistory.com)

 

 

다음 출력 결과는 어떻게 될까

#include<stdio.h>     
	int main() {
		char a = 'A';
		printf("%d\n", a);
		printf("%c\n", a);

		printf("%d\n", a+1);
		printf("%c\n", a+1);
		return 0;
	}

그림2

출력결과는 그림2처럼 출력된다. char변수로 'A'를 받았는데 서식문자가 %d냐, %c냐에 따라 결과값이 완전 달라지는 것을 볼 수 있다.

A를 정수형으로 출력하면 A의 아스키코드 값인 65가 출력되고

A를 문자형으로 출력하면 A가 그대로 출력된다

 

A를 정수형에서 +1을 하면 아스키코드 값 65+1인 66이 출력되고

A를 문자형에서 +1을 하면 아스키코드 값 66인 문자 B가 출력 된다

 


4. scanf()

scanf()는 변수를 입력받을 수 있도록 해주는 함수이다.

scanf()도 printf()와 마찬가지로 #include<stdio.h>가 있어야 쓸 수 있다. 

 

3을 입력받았다고 할 때 아래의 출력결과는 뭘까?

#include<stdio.h>     
	int main() {
		int a;
		scanf("%d", &a);
		printf("%d", a);
		return 0;
	}

출력결과는 3이다

scanf("%d",&a); 에서

&는  앰퍼샌드(ampersand)라고 읽으며 주소연산자라고도 한다

&a이라고 하면 변수a의 주소를 가리킨다

 

왜 그냥 a가 아니라 &a를 쓸까?

임시공간에 저장됐다가 임시공간에 있는 값을 변수의 주소에 저장하고 그 임시공간을 삭제하므로 변수의 주소가 필요한 것이다.

(이해가 안되면 그냥 넘어가고 scanf가 숫자를 입력받는 함수라는 것만 알고가면 된다)

출처 : [C언어] scanf()함수에서 &(ampersand)를 쓰는 이유 (tistory.com)


5. 사칙연산과 증감연산자

사칙연산 순은 수학에서 배운 것과 동일하다

곱하기(*)와 나누기(/)가 먼저고 그다음이 더하기(+), 빼기(-)이다

여기서 추가로 나머지(%)연산자가 있는데 곱하기, 나누기 우선순위와 동일하다

 

9%2하면 나머지는 1이므로 1이 나온다

 

증감연산자라는 것이 있다. ++a, a++ 이런식으로 표현하는데 -도 동일한 방식이다

증감연산자는 곱하기, 나누기, 나머지보다 먼저 연산된다.

 

다음 출력결과를 맞춰보자

#include<stdio.h>     
	int main() {
		int a = 10;
		int b = 15;
		int c = a++ + --b;
		int d = ++a + b--;
        

		printf("%d\n",a); 
		printf("%d\n", b);  
		printf("%d\n", c); 
		printf("%d", d); 
		return 0;
	}
더보기

12

13

24

26

 

처음보면 살짝 머리터질 수 있는 부분인데

++a는 전치연산이고

a++은 후치연산이다

 

전치연산은 앞에 붙어있어서 바로 계산되고

후치연산은 뒤에 붙어있어서 그 다음 라인부터 계산된다

 

c=a(후치연산)+b(전치연산)=10+14=24

a가 후치연산이라 c에는 a가 10으로 계산되지만

변수c에 값이 저장되는 그 다음부터 바로 a가 11이 된다.

 

d=a(전치연산)+b(후치 연산)=12+14=26

a는 전치연산이라 바로 11에서 1이 더해진 값이 d에 들어가고

b는 후치연산이라 14에서 1만큼 빼진 값이 아니라 그냥 그대로 14가 된다

 

시험에 낚시문제로 많이 출제되니 무조건 이해하고 넘어가자


6. 비트연산자

비트연산자 관련문제는 한번도 출제된 적이 없긴 한데 그래도 쉬우니 보고 넘어가자.

우리가 평소에 사용하는 숫자는 10진수이고 컴퓨터에서는 2진수를 사용한다

2진수는 0과 1로 이루어져있다.

 

3을 2진수로 바꾸면 11이다

2진수를 10진수로 바꾸는 방법은 크게 2가지인데 2번째 방법을 많이 사용한다.

 

일단 빈 백지에 128 64 32 16 8 4 2 1 이렇게 숫자를 적는다.

예를 들어 20을 이진수로 바꿔야한다면 위에 있는 숫자로 20을 만들어야한다

20을 만들려면 16+4면 된다

128 64 32 16 8 4 2 1
0 0 0 1 0 1 0 0

16과 4를 제외한 나머지에는 다 0을 대입해준다.

20의 이진수는 10100이 된다

 

비트연산자에 &, ^ , | 부터 알아본다.

&는 둘다 1일 때만 1반환

^는 두개가 1개는 1, 나머지는 0이어야만 1반환

|는 둘중 1개만 1일 때도 1반환

 

3 & 2 라고 한다면 먼저 3과 2를 이진수로 바꾼다 11과 10이다

11

10

이렇게 봤을 때 둘다 1인 위치만 1이고 나머지는 0이 된다

3 & 2라고 한다면 10으로 2가 된다

3^2라고 한다면 01로 1이 된다

3|2라고 한다면 11로 3이 된다

 

다음은 >>, << 연산자이다

이건 자세한 건 생략하고 푸는 방법만 알려주도록 하겠다.

비트를 이동시키는 연산자인데 

8<<2 라고 하면 8에서 2의 제곱만큼 곱해주면된다

8*4이므로 32가된다

 

8>>2 라고 하면 8에서 2의 제곱만큼 나눠주면 된다

8/4이므로 2가 된다

 

>>1이면 2의 1제곱

>>3이면 2의 3제곱

으로 계산하면 된다

 

[정보처리기사/예상문제] - 2024 정보처리기사 실기 예상 문제 모음

C언어 기출문제 모음

비전공자용 C언어 요약 1탄

비전공자용 C언어 요약 2탄(조건문, 반복문, 배열)

비전공자용 C언어 요약 3탄(함수, 포인터)

비전공자용 C언어 요약 4탄(포인터 심화, 구조체)

728x90
LIST
728x90
SMALL

[정보처리기사/예상문제] - 2024 정보처리기사 실기 예상 문제 모음

 

1. 인터넷에서 멀티캐스트를 위하여 사용되는 프로토콜

더보기

IGMP


2. 원격 컴퓨터에 안전하게 액세스하기 위한 유닉스 기반의 명령 인터페이스 및 프로토콜로, 기본적으로 22번 포트를 사용하고, 클라이언트/서버 연결의 양단은 전자 서명을 사용하여 인증되며, 패스워드는 암호화하여 보호되는 것

더보기

SSH

 

SSH는 Secure Shell의 약자


3. TLS를 통해 Application 계층 데이터를 암호화하여 보호해 주고 기본포트가 443으로 지정된 프로토콜

더보기

HTTPS


4. 물리적 하드웨어 주소를 IP Address로 매핑시키는 프로토콜

더보기

RARP


5. UDP 계열 프로토콜로, 원격 관리에 필요한 정보와 서버상태를 관리하는 것

더보기

SNMP


6. 동적 라우팅 프로토콜 중에 링크 상태(Link State) 라우팅 프로토콜

더보기

OSPF (Open Shortest Path First)


7. 연결 없는 IP 기반의 프로토콜로 최소한의 오버헤드를 갖고 재송신 처리를 실행하지 못하기 때문에 신뢰성이 떨어지며 한 번에 많은 양의 데이터를 송신할 때 사용하는 프로토콜


8.  RAID 시스템 중 한 드라이브에 기록되는 모든 데이터를 다른 드라이브에 복사해 놓는 방법으로 복구 능력을 제공하며, ′Mirroring′으로 불리는 것

더보기

RAID 1


9. 내부 통신에는 사설 IP 주소를 사용하고 외부와의 통신에는 공인 IP 주소를 사용할 수 있도록 하는 기술


10. 하이퍼바이저를 사용하거나 게스트 운영체제도 설치하지 않고 서버 운영에 필요한 프로그램과 라이브러리만 이미지로 만들어 프로세스처럼 동작시키는 경량화된 가상화 방식이며 실행되는 이미지는 컨테이너라고 부르며, 가상화 레이어가 존재하지 않고 운영체제도 존재하지 않기 때문에 파일 시스템,네트워크 속도가 상당히 빠르다

설명에 해당하는 용어

더보기

Docker 


11. 네트워킹에 필요한 모든 유형의 자원을 추상화하고, 소프트웨어 기반이며 자동으로 관리와 제어가 가능케 하는 가상화 기술

더보기

NFV (Network Functions Virtualization)


12. 한 대의 스위치에서 네트워크를 나누어 마치 여러 대의 스위치처럼 사용할 수 있게 하고, 하나의 포트에 여러 개의 네트워크 정보를 전송할 수 있게 해주는 기능

더보기

가상 랜(Virtual LAN)


13. 링크 상태 알고리즘을 적용한 대표적인 프로토콜로, 링크에서의 전송 시간을 링크 비용(거리)으로 사용하며 각 목적지 별 최단 경로를 다익스트라 알고리즘을 통해 알아내는 프로토콜

더보기

OSPF


14. 패킷 전송의 최적 경로를 위해 다른 라우터들로부터 정보를 수집하는데, 최대 홉이 15를 넘지 못하는 프로토콜


15. OSI 7 layer 참조 모델에서 사용되는 Protocols 중 TCP와 UDP port를 함께 사용하는 프로토콜


16. VPN의 터널링 프로토콜로 OSI 7계층 중 3계층 프로토콜로서 전송 모드와 터널 모드 2가지를 사용한다. 전송 모드는 IP 페이로드를 암호화하여 IP 헤더로 캡슐화하지만, 터널 모드는 IP 패킷을 모두 암호화하여 인터넷으로 전송한다

해당하는 용어

더보기

IPSec


17. Link State 알고리즘을 이용해 서로에게 자신의 현재 상태를 알려주며 네트워크 내 통신을 위해 사용하는 프로토콜

더보기

OSPF


18. TCP/IP 프로토콜 중에서 IP 계층의 한 부분으로 에러 메시지와 같은 상태 정보를 알려주는 프로토콜

더보기

ICMP(Internet Control Message Protocol)


19. 단말이 네트워크에 접근하기 전 보안정책 준수여부를 검사하고 IP 및 MAC address의 인가 여부를 검사하여 네트워크 자원의 이용을 허용하는 방식


20. 서로 연결된 네트워크에서 사용자간 파일을 전송할 수 있도록 해주는 기능을 제공하며, 파일 전송시 2개의 포트를 연결하여 데이터를 전송한다. 이 때 21포트는 데이터 전송을 담당하고 21포트는 제어를 담당하는 프로토콜

더보기

FTP(File Transfer Protocol)


21. 다음은 잘 알려진 포트번호이다. 해당하는 용어를 쓰시오.

포트  이름
21
22
23
25
53
80
110
143
194
443
더보기

ㄱ : FTP

ㄴ : SSH(원격 제어, 보안 기능)

ㄷ : telnet(원격 제어)

ㄹ : SMTP(이메일 전송)

ㅁ : DNS

ㅂ : HTTP(웹)

ㅅ : POP3(이메일 수신)

ㅇ : IMAP(이메인 수신, 보관 기능

ㅈ : IRC

ㅊ:  HTTPS

 

 

[정보처리기사/예상문제] - 2024 정보처리기사 실기 예상 문제 모음

728x90
LIST
728x90
SMALL

1. 다음은 쿠키와 세션에 관한 설명이다. 맞으면 o, 틀리면 x 표시를 하시오. 

① 쿠키는 웹 페이지에 접속할 때 웹 서버가 사용자의 컴퓨터에 저장하는 데이터이다. (   )

② 쿠키를 사용하면 사용자의 컴퓨터에서 아이디와 비밀번호를 기억할 수 있다. (   )

③ 세션은 쿠키보다 사용법이 간단하지만 보안성이 더 취약하다. (   )

④ 세션은 쿠키와 달리 사용자의 컴퓨터와 웹 서버에 세션 정보를 저장한다. (   )

⑤ 세션은 쿠키보다 보안성이 더 강하다 (   )

더보기

① o

② o

③ x

④ o

⑤ o


2. 쿠키와 세션에 관한 물음에 답하시오.

① 쿠키를 생성할 때 사용하는 함수는 무엇인가?

② 세션을 초기화하는 데 사용하는 함수는 무엇인가?

③ 세션을 삭제하는 데 사용하는 함수는 무엇인가?

더보기

① setcookie()

② session_start()

③ unset()


3. 생성된 쿠키인 userid를 불러오는 데 사용하는 변수는 무엇인가?

① $_COOKIE["userid"]

$_POST["userid"]

$_GET["userid"]

$_SERVER["userid"]

더보기

① $_COOKIE["userid"]


4. 등록된 세션인 userid를 불러오는 데 사용하는 변수는 무엇인가?

① $_COOKIE["userid"]

② $_POST["userid"]

③ $_SESSION["userid"]

④ $_SERVER["userid"]


5. 다음은 setcookie()에 의해 등록된 userid, username 쿠키를 사용하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
  if(isset($_COOKIE["userid"]) && isset($_COOKIE["username"]) )
  {
    $userid=(가)["userid"];
    $username=(나)["username"];

    echo "userid 쿠키 : " . (다)."<br>";
    echo "username 쿠키 : " . (라)."<br>";
  }
  else
  {
    echo "쿠키가 생성되지 않았다!";
  }

?>
더보기

(가) $_COOKIE
(나) $_COOKIE
(다) $userid
(라) $username

<?php
  if(isset($_COOKIE["userid"]) && isset($_COOKIE["username"]) )
  {
    $userid=$_COOKIE["userid"];
    $username=$_COOKIE["username"];

    echo "userid 쿠키 : " . $userid."<br>";
    echo "username 쿠키 : " . $username."<br>";
  }
  else
  {
    echo "쿠키가 생성되지 않았다!";
  }

?>

6. 다음은 세션을 시작하여 세션 변수를 등록하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
   session_start();
   echo "세션 시작!!!<br>";

   (가)['userid']="ocella";
   (나)['username']="박영준";
   echo '세션 등록 완료!!!<br>';

   echo $_SESSION['userid']."<br>";
   echo $_SESSION['usename']."<br>";
?>
더보기

(가) $_SESSION
(나) $_SESSION

<?php
   session_start();
   echo "세션 시작!!!<br>";

   $_SESSION['userid']="ocella";
   $_SESSION['username']="박영준";
   echo '세션 등록 완료!!!<br>';

   echo $_SESSION['userid']."<br>";
   echo $_SESSION['usename']."<br>";
?>

7. 다음은 등록된 세션을 웹 페이지에서 사용하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
  (가);
   $userid=(나)["userid"];
   $username=(다)["username"];
?>

<html>
  <head>
    <meta charset="utf-8"
  </head>
    <body>
      <h3>등록된 세션의 사용</h3>
      <ul>
        <li>등록된 세션(userid) : <?= (라)?></li>
        <li>등록된 세션(username) : <?=(마)?></li>
      </ul>
    </body>
</html>
더보기

(가)  session_start()
(나) $_SESSION
(다) $_SESSION
(라) $userId
(마) $username

<?php
  session_start();
   $userid=$_SESSION["userid"];
   $username=$_SESSION["username"];
?>

<html>
  <head>
    <meta charset="utf-8"
  </head>
    <body>
      <h3>등록된 세션의 사용</h3>
      <ul>
        <li>등록된 세션(userid) : <?= $userId?></li>
        <li>등록된 세션(username) : <?= $username?></li>
      </ul>
    </body>
</html>
728x90
LIST
728x90
SMALL

1. 다음은 웹 페이지에서 아이디와 비밀번호를 입력하는 폼 양식의 소스코드이다.

<body>
  <form name="form1" method="post" action="view2.php">
    <ul>
      <li>아 &nbsp;이 &nbsp;디 : <input type="text" name="id"></li>
      <li>비밀번호 : <input type="text" name="pass"></li>
      <li><input type="submit" value="확인"></li>  <!--구간A-->
    </ul>
  </form>
</body>

구간 A의 <확인> 버튼을 눌렀을 때 사용자가 입력한 데이터를 처리하는 view2.php 파일의 소스코드는 다음과 같다. 빈칸을 채워 프로그램을 완성하시오.

<body>
<?php
   $id=(가)["id"];
   $pass=$_POST["(나)"];
?>
    <ul>
       <li>아 &nbsp;이 &nbsp;디 : <?= $id?></li>
       <li>비밀번호 : <?=(다) ?></li>
       
    </ul>
</body>
더보기

(가) $_POST
(나) pass
(다) $pass

<body>
<?php
   $id=$_POST["id"];
   $pass=$_POST["pass"];
?>
    <ul>
       <li>아 &nbsp;이 &nbsp;디 : <?= $id?></li>
       <li>비밀번호 : <?=$pass ?></li>
       
    </ul>
</body>

2. 다음은 웹 페이지에서 체크박스 폼 양식으로 사용자가 취미를 선택하게 하는 프로그램의 소스코드이다.

<body>
  <form name="form1" method="post" action="view5.php">
    <h3>당신의 취미는?</h3>
    <ul>
      <li>영화감상<input type="checkbox" name=" hobby[]" value="영화감상"></li>
      <li>맛집탐방<input type="checkbox" name=" hobby[]" value="맛집탐방"></li>
      <li>독서<input type="checkbox" name=" hobby[]" value="독서"></li>
      <li>요가<input type="checkbox" name=" hobby[]" value="요가"></li>
      <li>축구<input type="checkbox" name=" hobby[]" value="축구"></li>
      <li><input type="submit" value="확인"></li> <!--이 구간 A-->
    </ul>
  </form>

</body>

구간 A의 <확인> 버튼을 눌렀을 때 사용자가 체크박스에서 선택한 항목을 화면에 출력하는 파일의 소스코드는 다음과 같다. 빈칸을 채워 프로그램을 완성하시오.

<body>
    <ul>
       <li> 나의 취미 : 
         <?php
           $num= count((가)["hobby"]);

            for($i=0;$i<$num;$i++){
              echo $_POST["(나)"][(다)];
              if($i != $num -1)
                echo ", ";
            }
          ?>

       </li>
       
    </ul>
</body>
더보기

(가) $_POST
(나) hobby
(다) $i

<body>
    <ul>
       <li> 나의 취미 : 
         <?php
           $num= count($_POST["hobby"]);

            for($i=0;$i<$num;$i++){
              echo $_POST["hobby"][$i];
              if($i != $num -1)
                echo ", ";
            }
          ?>

       </li>
       
    </ul>
</body>

3. 다음은 웹 페이지에서 라디오 버튼 폼 양식으로 사용자가 이메일 수신 여부를 선택하게 하는 프로그램의 소스코드이다. 

<body>
  <form name="form1" method="post" action="view4.php">
    <h3>당신의 취미는?</h3>
    <ul>
       <li>성별 : 남성<input type="radio" name="gender" value="남" checked>
                여성<input type="radio" name="gender" value="여">
      </li>
      <li>이메일 : 수신<input type="radio" name="email_ok" value="예">
               비수신<input type="radio" name="email_ok" value="아니오" checked>
      </li>
      <li><input type="submit" value="확인"></li>  <!--이 구간 A-->
    </ul>
  </form>

</body>

A구간의 <확인> 버튼을 눌렀을 때 사용자가 라디오 버튼에서 선택한 항목을 화면에 출력하는 파일의 소스코드는 다음과 같다. 빈칸을 채워 프로그램을 완성하시오.

<body>
<?php
   (가)=$_POST["gender"];
   $email_ok=$_POST["email_ok"];
   if((나)== "예")
      $email = "수신";
   else
     $email="비수신";
?>

  <ul>
    <li>성별 : <?= $gender?></li>
     <li>이메일 : <?= (다)?></li>
  </ul>
</body>
더보기

(가) $gender
(나) $email_ok
(다) $email

<body>
<?php
   $gender=$_POST["gender"];
   $email_ok=$_POST["email_ok"];
   if($email_ok== "예")
      $email = "수신";
   else
     $email="비수신";
?>

  <ul>
    <li>성별 : <?= $gender?></li>
     <li>이메일 : <?= $email?></li>
  </ul>
</body>

4. 업로드 파일의 name 속성을 "upload"로 설정했을 때 업로드된 파일을 처리하는 쪽에서 사용하는 다음 변수의 의미를 간단히 설명하시오.

① $_FILES["upload"]["name"] 
② $_FILES["upload"]["type"] 
③ $_FILES["upload"]["size"]
④ $_FILES["upload"]["tmp_name"]

⑤$_FILES["upload"]["error"]

더보기

① $_FILES["upload"]["name"]            // 업로드된 파일명
② $_FILES["upload"]["type"]             // 업로드된 파일의 데이터형
③ $_FILES["upload"]["size"]             // 업로드된 파일의 크기(바이트)
④ $_FILES["upload"]["tmp_name"]  // 서버에 저장된 파일명

⑤$_FILES["upload"]["error"]            // 업로드 시 발생한 오류 코드


5. 게시판의 목록 보기 페이지(board_list.php)를 브라우저 화면에 가져오기 위해 사용하는 URL주소가 다음과 같을 때, board_view.php 소스코드의 빈칸을 채워 프로그램을 완성하시오.

http://localhost/board_list.php?table=free
<body>
<?php
  $table=(가)["table"];
if((나)=="free")
  $board_title="자유게시판";
else
  $board_title="공지사항";
?>
<h1><?= (다) ?></h1>
</body>
더보기


(가) $_GET
(나) $table
(다) $board_title

<body>
<?php
  $table=$_GET["table"];
if($table=="free")
  $board_title="자유게시판";
else
  $board_title="공지사항";
?>
<h1><?= $board_title ?></h1>
</body>
728x90
LIST
728x90
SMALL

1. 다음은 함수를 이용하여 두 수의 최대공약수를 구하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력 포맷

###와 ###의 최대 공약수 : ###
<?php
	function (가)($x, $y) { 
		if ($x > $y) 
			$small = $y; 
		else 
			$small = (나);

		for ($i=1; $i<=$small; $i++) { 
			if($x%$i == 0 and $y%$i == 0) 
				(다) = $i; 
				
		}
		return $result; 
	}

	$num1 = 9;
	$num2 = 33; 

	$max_gong = computeMaxGong($num1, $num2); 

	echo "{$num1}와 {$num2}의 최대공약수 : (라)"; 
?>
더보기

(가) computeMaxGong
(나) $x
(다) $result
(라) $max_gong

<?php
	function computeMaxGong($x, $y) { 
		if ($x > $y) 
			$small = $y; 
		else 
			$small = $x;

		for ($i=1; $i<=$small; $i++) { 
			if($x%$i == 0 and $y%$i == 0) 
				$result = $i; 
				
		}
		return $result; 
	}

	$num1 = 9;
	$num2 = 33; 

	$max_gong = computeMaxGong($num1, $num2); 

	echo "{$num1}와 {$num2}의 최대공약수 : $max_gong"; 
?>

 


2. 다음은 함수를 이용하여 3개의 수 중에서 가장 큰 수를 찾는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력포맷

###, ###, ### 중 가장 큰 수 : ###
<?php
	function maxTwo($i, $j) {
		if($i > $j) return $i; 
		else return (가); 
	}

	function maxThree($x, $y, (나)) { 

		return maxTwo((다)($x, $y), maxTwo($y, $z));

	}

	$a = 10;
	$b = 5;
	$c = 7; 

	(라) = maxThree($a, $b, $c); 

	echo "$a, $b, $c 중 가장 큰 수 : $max_num"; 
?>
더보기

(가) $j
(나) $z
(다) maxTwo
(라) $max_num

<?php
	function maxTwo($i, $j) {
		if($i > $j) return $i; 
		else return $j; 
	}

	function maxThree($x, $y, $z) { 

		return maxTwo(maxTwo($x, $y), maxTwo($y, $z));

	}

	$a = 10;
	$b = 5;
	$c = 7; 

	$max_num = maxThree($a, $b, $c); 

	echo "$a, $b, $c 중 가장 큰 수 : $max_num"; 
?>

3. 다음은 놀이공원 입장객의 나이와 입장권의 종류에 따라 요금을 계산하여 출력하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오. 입장권의 종류별 요금은 다음과 같다.

구분 어른 청소년 어린이 비고
입장권 18,000원 15,000원 13,000원 놀이공원 기본 입장
자유
이용권
주간 32,000원 28,000원 25,000원 입장+놀이기구 무제한 이용
야간 29,000원 25,000원 22,000원
빅5 이용권 29,000원 25,000원 22,000원 입장+놀이기구  5종 이용

※입장객의 나이에 따른 구분(만 나이 기준) : 0~3세는 무료, 어린이는 4~10세, 청소년은 11~17세, 성인은 18세이상

 

출력포맷

입장권 종류 : ####

입장객 나이 : ## 세

입장료 : ###### 원
<?php
	function (가)($cat){
		if ($cat == "입장권") $price = 13000;
		elseif ($cat == "자유 이용권 주간") $price = 25000;
		elseif ($cat == "자유 이용권 야간") $price = 22000;
		else $price = 22000;

		return (나);
	}
	function (다)($cat){ 
		if ($cat == "입장권") $price = 15000;
		elseif ($cat == "자유 이용권 주간") $price = 28000;
		elseif ($cat == "자유 이용권 야간") $price = 25000;
		(라) $price = 25000;

		(마) $price;
	}
	function (바)($cat){ 
		(사) ($cat == "입장권") $price = 18000;
		elseif ($cat == "자유 이용권 주간") $price = 32000;
		elseif ($cat == "자유 이용권 야간") $price = 29000;
		else $price = 29000;

		return $price;
	}

	$age = 2;
	$category = "자유 이용권 야간";


	
	if($age >= 0 && $age <= 3) $fee = 0;
	elseif($age >= 4 && $age <= 10) $fee = child_rate($category);
	elseif($age >= 11 && $age <= 17) $fee = youth_rate($category);
	else $fee = adult_rate($category);

	
	echo "입장권 종류 : (아)<br>";
	echo "입장객 나이 : {(자)}세<br>";
	echo "입장료 : {(차)}원";
?>
더보기

(가) child_rate
(나) $price
(다) youth_rate
(라) else
(마) return
(바) adult_rate
(사) if
(아) $category
(자) $age
(차) $fee

<?php
	function child_rate($cat){
		if ($cat == "입장권") $price = 13000;
		elseif ($cat == "자유 이용권 주간") $price = 25000;
		elseif ($cat == "자유 이용권 야간") $price = 22000;
		else $price = 22000;

		return $price;
	}
	function youth_rate($cat){ 
		if ($cat == "입장권") $price = 15000;
		elseif ($cat == "자유 이용권 주간") $price = 28000;
		elseif ($cat == "자유 이용권 야간") $price = 25000;
		else $price = 25000;

		return $price;
	}
	function adult_rate($cat){ 
		if ($cat == "입장권") $price = 18000;
		elseif ($cat == "자유 이용권 주간") $price = 32000;
		elseif ($cat == "자유 이용권 야간") $price = 29000;
		else $price = 29000;

		return $price;
	}

	$age = 2;
	$category = "자유 이용권 야간";


	
	if($age >= 0 && $age <= 3) $fee = 0;
	elseif($age >= 4 && $age <= 10) $fee = child_rate($category);
	elseif($age >= 11 && $age <= 17) $fee = youth_rate($category);
	else $fee = adult_rate($category);

	
	echo "입장권 종류 : $category<br>";
	echo "입장객 나이 : {$age}세<br>";
	echo "입장료 : {$fee}원";
?>
728x90
LIST

+ Recent posts