정보처리기사

[정보처리기사 요약 10-1] C언어와 Java 입출력, 제어문, 포인터, 구조체 가이드

Hong's_Computer 2026. 3. 2. 15:00
반응형
본문에 오류가 있을 수 있음을 감안하고 봐주시길 바랍니다.
# 문제 풀이 중 오답노트 하면서 나온 내용을 정리한 것

 

데이터 입·출력의 개요: 키보드로부터 데이터를 입력받아 화면이나 파일로 출력하는 것을 의미한다.

헝가리안 표기법: 변수명 작성 시 변수의 자료형을 알 수 있도록 자료형을 의미하는 문자를 포함하여 작성하는 방법이다. # int_a

 

자료형

종류 자료형 크기(C) 크기(Java)
정수형 int 4Byte 4Byte
문자형 char 1Byte 2Byte
실수형 float 4Byte 4Byte
double 8Byte 8Byte

 

 

C언어의 입·출력 함수: scanf, printf

#include <stdio.h>
int main() {
    int i, j, k;    // 변수 선언, 8진수=0~, 16진수=0x~
    scanf("%d %d", &i, &j);   // 입력을 스페이스로 구분해 정수 2개를 i와 j에 저장
    k = i+j;
    printf("%d\n", k);   // k 값을 정수로 출력한다.
    return 0; }

 

Java의 입·출력 함수: Scanner, nextInt, print, printf, println

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);    // 키보드로부터 새로운 입력을 받음
        int a = scan.nextInt();   // 정수형으로 입력을 받는다.
        int b = 035;    // 035(8진수), 0x35(16진수), 35(10진수)
        System.out.printf("a*3 = %d\n", a*3);   // 정수 출력
        System.out.println("a/2 = " + (a/2));   // \n이 포함된 출력
        System.out.print("a-1 = " + (a-1));
        scan.close(); } }   // scan 메모리 해제

 

 

C언어에서 사용할 수 없는 변수명: 변수명에 공백이나 *, +,-,/ 등의 특수문자를 사용할 수 없다. 예약어 사용이 불가능하다. 숫자로 시작할 수 없다.

 

 

C언어 라이브러리

  • stdlib.h: 문자열을 수치 데이터로 바꾸는 문자 변환함수와 수치를 문자열로 바꿔주는 변환함수 등이 있다.
  • string.h: 문자열 처리 함수로 strlen()이 포함되어 있다.
    • strlen(s) - s의 길이를 구한다.
    • strcpy(s1, s2) - s2를 s1으로 복사한다.
    • strcmp(s1, s2) - s1과 s2이 동일한지 비교한다.
    • strrev(s) - s를 거꾸로 반환한다.
  • stdio.h: 표준 입출력 라이브러리이다.
  • math.h: 삼각 함수, 제곱근, 지수 등 수학적인 함수를 내장하고 잇다.

 

서식 지정자

서식 문자열 의미
%d 정수형 10진수의 입·출력에 사용
%o 정수형 8진수의 입·출력에 사용
%x 정수형 16진수의 입·출력에 사용
%c 문자의 입·출력에 사용
%s 문자열의 입·출력에 사용
%f 소수점을 포함한 실수의 입·출력에 사용(출력시 기본 소수점 6자리)

 

제어 문자

제어문자 기능
\n 커서를 다음 줄의 처음으로 이동
\t 커서를 일정 간격 띄움(Tab 간격)
\0 널(Null) 문자 출력

 

 

연산자 우선순위(단산시관 비논 조대순)

대분류 중분류 연산자 결합 규칙 우선 순위
단항 연산 단항 연산자 !(논리 not), ~(비트 not), ++(증가), --(감소), sizeof(기타) 높음
















낮음
이항연산자 산술 연산자 +, -, *, /, %
시프트 연산자(2진수) <<(왼쪽으로 이동, 뒤에 0 붙이기), >> (오른쪽으로 이동, 뒷자리 없애기) → 비트 단위 연산
관계 연산자 <, <=, >=, >
 ==, !=
비트 연산자(2진수) &(AND), ^(XOR, 같으면 0 다르면 1), |(OR)
논리 연산자 &&(AND), ||(OR)
삼항 연산자 조건 연산자 A ? B : C
대입 연산자 대입 연산자 =, +=, -=, /=, *=, %=, <<=, >>= 등
순서 연산자 순서 연산자 ,

 

 

제어문: 서술된 순서에 따라 무조건 위에서 아래로 실행되는 프로그램의 순서를 변경할 때 사용하는 명령문이다.

  • for문: 초기값, 최종값, 증가값을 지정하는 수식을 이용해 정해진 횟수를 반복하는 제어문
  • while문: 조건이 참인 동안 실행한 문장을 반복 수행하는 제어문
  • if문: 조건에 따라 실행할 문장을 달리하는 제어문
  • switch문: 조건에 따라 분기할 곳이 여러 곳인 경우 간단하게 처리할 수 있는 제어문
  • continue: 반복문에서 continue가 나오면 continue 이후의 문장을 실행하지 않고 제어를 반복문 처음으로 옮긴다.
  • break: 반복문이나 switch문에서 블록을 벗어난다.

 

프로그래밍 언어의 분류

  • 절차적 언어: 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술해 나가는 언어이며 주로 객체 지향 언어와 비교된다.
    • ALGOL: PASCAL과 C언어의 모체가 된 절차적 프로그래밍 언어이다. 수치 계산이나 논리 연산에 특화되어 있어 과학 기술 계산용으로 주로 사용된다.
  • 객체 지향 언어: 객체들을 조립해서 프로그래밍을 수행하며 객체 중심 프로그래밍 언어이다.
  • 스크립트 언어: HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것으로 기계어로 컴파일되지 않고 별도의 번역기가 소스를 분석해 동작하는 언어이다.
    • PHP: 서버용 스크립트 언어로 운영체제(OS)에 사용된다. 웹 페이지 제작에 많이 사용된다.
  • 선언형 언어: 프로그램이 수행해야 할 문제를 기술하는 언어로 목표를 명시하고 알고리즘은 명시하지 않는 특징이 있다. (예: HTML·XML·HASKELL)

 

 

포인터: 변수의 주소를 저장할 수 있는 변수이다. 주소를 출력하거나 해당 주소의 값을 읽고 쓰는 등 메모리의 다양한 조작이 가능하다. (&는 주소, *는 포인터가 가리키는 값)

#include <stdio.h>
int main(void) {
    int a = 50;
    int *b = &a;   // 포인터 b에 a의 주소를 삽입
    *b = *b + 20;   // 포인터 b의 값에 + 20
    printf("%d, %d\n", a, *b);   // 70, 70
    char *s;
    s = "gildong";
    for (int i=0; i<7; i+=2) {     //  i=0           2     4    6
        printf("%c, ", s[i]);         //     g           l      o    g
        printf("%c, ", *(s+i));     //     g           l      o    g
        printf("%s\n", s+i);        // gildong ldong ong g
    } }

 

 

구조체: '서로 다른' 자료형의 변수들을 하나로 묶은 모임입니다. (멤버 지정 시 일반 변수는 ., 포인터 변수는 -> 사용)

  • 구조체 정의
struct sawon {
    char name[10];   // 변수 선언
    char jikwi[10];
    int pay;
}
  • 구조체 변수 선언
struct sawon samsung, *seoul;   // samsung이 구조체의 변수명이고, seoul은 구조체의 포인터 변수명이다.
  • 구조체 멤버 지정
samsung.name = "홍길동";       // '.'에 의한 지정
seoul->name = "홍길동";          // '->'에 의한 지정, 포인터 변수 이용 시
(*seoul).name = "홍길동";   // '*'에 의한 지정

 

 

C언어 malloc() 함수: 원하는 시점에 원하는 만큼 메모리를 동적으로 할당한다. 사용자가 입력한 Byte 만큼 메모리를 할당한다. free 명령어로 할당된 메모리를 해제한다. 메모리 할당이 불가능할 경우 NULL이 반환된다.

 

atoi(): C언어에서 문자열을 정수형으로 변환하는 라이브러리 함수

 

C++: C언어에 객체지향 개념을 적용한 언어로 모든 문제를 객체로 모델링하여 표현함

C#: .Net 프레임워크의 한 부분으로 만들어진 C언어로 C++과 Visual Basic의 편의성을 결합함

 

자료 구성 단위

단위 설명
비트(Bit) 자료(정보) 표현의 최소 다누이, 두 가지 상태(0과 1)를 표시하는 2진수 1자리임
니블(Nibble) 4개의 비트(Bit)가 모여 1개의 니블(Nibble)을 구성함, 16진수 1자리를 표현하기에 적합함
바이트(Byte) 문자를 표현하는 최소 단위, 8개의 비트(Bit)가 모여 1바이트(1Byte)를 구성함
워드(Word) CPU가 한 번에 처리할 수 있는 명령 단위
필드(Field) 파일 구성의 최소 단위, 의미 있는 정보를 표현하는 최소 단위
레코드(Record) 하나 이상의 관련된 필드가 모여서 구서오딤
블록(Block) 하나 이상의 논리 레코드가 모여서 구성됨
파일(File) 프로그램 구성의 기본 단위로 여러 레코드가 모여서 구성됨
데이터베이스(Database) 여러 개의 관련된 파일(File)의 집합
반응형