Chapter 2 – 기본 프로그래밍 Outline 2.1 C 프로그램의 형태

Slides:



Advertisements
Similar presentations
Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
Chapter 7. 조건문.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
3. printf()와 데이터 형식.
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
Chapter 04 C 연산자의 이해.
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
포인터 활용 포인터 활용.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
C 언어 연습문제 (formatted I/O)
제 17 강 formatted I/O shcho.pe.kr.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Chapter 06. printf 함수와 scanf 함수 정리하기
C언어 콘서트 제2장 기초 사항.
2주차: 변수, 수식, Control Flow.
11 표준 입출력과 파일 입출력 데이터를 읽고 쓰는 다양한 방법 익히기!.
6장. printf와 scanf 함수에 대한 고찰
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 03. 변수와 연산자.
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
C 2장. C 프로그램 시작하기 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
연산자 (Operator).
01_ C++ 스타일의 입출력 02_ C 스타일의 입출력
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
Chapter 08. 함수.
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
제 15 강 문자와 코드 shcho.pe.kr.
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
어서와 C언어는 처음이지 제21장.
C.
13. 포인터와 배열! 함께 이해하기.
실 습 2.
Pointers summary.
제 10 강 문자 입출력.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

Chapter 2 – 기본 프로그래밍 Outline 2.1 C 프로그램의 형태 2.2 출력 함수 printf()와 입력 함수 scanf() 2.3 출력 함수 putchar()와 입력 함수 getchar() 2.4 요약 2.5 예제

2.1 C 프로그램의 형태 - C 프로그램은 한 개의 main 함수가 필요하다. - 이 함수의 몸체는 한 개의 블록(block)을 이루며, { 과 } 로 둘려 쌓여있다. - 몸체는 문장들을 열거하여 이루어진다. - 각 문장의 끝은 ;으로 끝난다. int main(void) { 문장; . . . }

2.1 C 프로그램의 형태 #include <stdio.h> stdio.h를 해당 위치에 포함시키라는 전처리 (preprocessor) 명령 stdio.h는 특정 디렉토리(가령 /usr/include)의 file이다 입출력의 수행을 위해 항상 포함해야 한다. int main(void)  void int main() void는 인수가 없다는 의미로 생략해도 됨 main 함수 앞의 int는 정수값을 반환한다는 의미 printf(“Hello, world!\n”); “과 ” 사이의 문자열을 출력한다. \n을 출력하면 새 줄로 바뀐다. return 0; 여기서는 생략해도 무방하다. main함수가 종료되며 return뒤의 0을 반환한다. 정상적인 프로그램의 종료를 의미한다.

Hello, world! 1 /* File : prog2-1.c 2 첫번째 C 프로그램 */ 3 #include <stdio.h> 4 int main(void) 5 { 6 printf(“Hello, world!\n”); 7 return 0; 8 } prog2-1.c output Hello, world!  

2.1 C 프로그램의 형태 printf(“ABCDEF”); printf(“abcdef”); printf(“0123456\n”); 3 개의 문자열을 연속으로 한 줄에 출력한다. printf(“ABCDEF\n”); printf(“abcdef\n”); 각 문자열의 뒤에 줄바꿈 문자(\n)이 있으므로 1 줄에 1 개의 문자열 씩 출력한다

3 #include <stdio.h> 4 int main(void) { 5 printf(“ABCDEFG”); 1 /* File : prog2-2.c 2 다수의 문자열을 출력하는 프로그램 */ 3 #include <stdio.h> 4 int main(void) { 5 printf(“ABCDEFG”); 6 printf(“abcdefg”); 7 printf(“0123456\n”); 8 } prog2-2.c output ABCDEFGabcdefg0123456  

3 #include <stdio.h> 4 int main(void) { 5 printf(“ABCDEFG\n”); 1 /* File : prog2-3.c 2 한 줄에 한 문자열 씩 출력하는 프로그램 */ 3 #include <stdio.h> 4 int main(void) { 5 printf(“ABCDEFG\n”); 6 printf(“abcdefg\n”); 7 printf(“0123456\n”); 8 } prog2-3.c output ABCDEFG abcdefg 0123456  

2.2 출력 함수 printf()와 입력 함수 scanf() (예) %s는 문자열(string), %c는 문자(char), %d는 십진수 정수 printf(“abc”); 와 printf(“%s”, “abc”)는 출력이 같다. printf(“%c%c%c”, ‘a’, ‘b’, ‘c’); abc를 출력한다. 가령 두번째 %c는 ‘b’를 문자형으로 출력하게 한다.

2.2 출력 함수 printf()와 입력 함수 scanf() printf(“%c%2c%3c”, ‘a’, ‘b’, ‘c’); a b c를 출력한다. %와 변환문자 사이의 자연수는 출력할 자리의 필드폭이다. 가령 %2c는 2자리를 잡고 인수 ‘b’를 문자(character)형으로 출력하게 한다. printf(“The sum is %d.\n”, z); Z값이 150인 경우의 출력: The sum is 150. 즉 첫 인수에서 %변환문자 꼴이 아닌 부분은 그대로 출력되고, %변환문자 부분은 가리키는 해당 인수를 변환하여 출력된다.

2.2 출력 함수 printf()와 입력 함수 scanf() <변환 문자> scanf() 변환 변환 문자       입력 스트림에서 문자의 변환 방법 c              문자 d              십진수 f              실수(float) lf 또는 LF    실수(long float 즉 double) s              문자열 printf() 변환 문자 변환 문자      해당되는 인수의 출력 방법 c              문자 d              십진수 정수 e              과학적 표기법으로의 실수 f              실수 g              e-포맷과 f-포맷 중 짧은 것 s              문자열 

2.2 출력 함수 printf()와 입력 함수 scanf() <정수의 취급> int x, y, z; - 세 개의 변수 x, y z가 모두 정수(integer)형 변수임을 선언하고 있다. - x, y, z 각각에는 정수만 배정할 수 있으며, 3.14 등의 실수를 저장하려 하면 에러가 난다. x = 123; - 변수 x에 정수값 123을 배정한다(assign)는 의미 - x값이 123과 같다는 수학적 의미가 아니다. - 물론 정수값 123을 배정한 후에는 x값이 123이 된다.

2.2 출력 함수 printf()와 입력 함수 scanf() <정수의 취급> scanf(“%d”, &y); - 십진수의 정수를 읽어 들여 y에 저장하라. - &y는 y의 주소를 뜻하며, scanf의 경우, 읽어 들일 변수의 주소를 제공해야 한다. scanf(“%3d”, &y); - 자릿수 3을 명시했으므로 4567을 입력해도 3자리 456까지만 읽어 들이고, 다음 7은 다음 읽어 들일 때 사용한다.

3 #include <stdio.h> 4 int main(void) { 5 int x, y, z; 1 /* File : prog2-4.c 2 정수의 덧셈과 정수의 입출력 */ 3 #include <stdio.h> 4 int main(void) { 5 int x, y, z; 6 x = 123; 7 scanf(“%d”, &y); 8 z = x + y; 9 printf(“The sum is %d.\n”, z); 10 } prog2-4.c output [해 설] 456 The sum is 579. 프로그램 동작시의 사용자의 입력부분을 이탤릭 체로 표시하였다.

2.2 출력 함수 printf()와 입력 함수 scanf() <실수의 취급> float x, y, z; - 세 개의 변수 x, y z가 모두 실수(float)형 변수임을 선언하고 있다. - 실수는 부동소숫점(floating point) 수라고도 불린다. - x, y, z 에는 123.456 같은 실수만 배정할 수 있다. - 가령 정수 30은 실수 30.0으로 변환되어 배정된다. x = 123.456; - 변수 x에 실수값 123.456을 배정한다(assign). - x값이 123과 같다는 수학적 의미와는 다르다. - 물론 정수값 123을 배정한 후에는 x값이 123이 된다.

2.2 출력 함수 printf()와 입력 함수 scanf() <실수의 취급> z = x + y; - 실수 x의 값과 실수 y의 값을 더하여, 실수 z에 배정한다. printf(“x + y = %f\n”, z); - 첫 인수를 출력하되, 실수형 자료 출력을 뜻하는 %f자리에는 z에 저장된 실수값으로 치환하여 출력한다. - z값이 가령 912.468인 경우 컴퓨터가 저장하는 가장 가까운 값(가령 912.467957)으로 출력됨에 유의해야 한다.

3 #include <stdio.h> 4 int main(void) { 5 float x, y, z; 1 /* File : prog2-5.c 2 실수의 덧셈과 출력 */ 3 #include <stdio.h> 4 int main(void) { 5 float x, y, z; 6 x = 123.456; 7 y = 789.012; 8 z = x + y; 9 printf(“x + y = %f\n”, z); 10 } prog2-5.c output x + y = 912.467957  

2.2 출력 함수 printf()와 입력 함수 scanf() <문자와 문자열의 취급> printf(“%c%c%c%c ”, ‘Y’, ‘e’, ‘s’, ‘,’) ; - 네 개의 문자를 %c 즉 문자형 그대로 출력한다. 4번째 %c 뒤의 공란 포함 다섯 자가 출력된다. char c1, c2, c3, c4, *a; - c1, c2, c3, c4는 char형 변수로 선언된다. - *a(즉 주소 a가 가리키는 곳에 저장된 값)가 char형이다. 즉 a는 char 포인터임을 선언한다.

2.2 출력 함수 printf()와 입력 함수 scanf() <문자와 문자열의 취급> a = “This is a computer.”; - 이 문자열이 저장된 메모리의 주소값이 a에 저장된다. - 문자열이 저장될 때에는 널문자가 추가된다. 따라서 이 문자열의 길이는 16이지만 저장을 위해서는 17바이트가 사용된다. printf(“%s\n”, a); - %s는 문자열을 출력하기 위해 사용하며, 포인터 a가 가리키는 문자열을 출력한다. - 물론 문자열 뒤에는 줄바꿈 문자(\n)가 출력된다.

3 #include <stdio.h> 4 int main(void) { 1 /* File : prog2-6a.c 2 문자열과 문자의 출력 */ 3 #include <stdio.h> 4 int main(void) { 5 printf(“%c%c%c%c ”, ‘Y’, ‘e’, ‘s’, ‘,’); 6 printf(“I am a computer.\n”); 7 } prog2-6a.c output Yes, I am a computer.  

3 #include <stdio.h> 4 int main(void) { 1 /* File : prog2-6b.c 2 문자열과 문자의 출력 */ 3 #include <stdio.h> 4 int main(void) { 5 char c1, c2, c3, c4, *a; 6 c1 = ‘Y’; c2 = ‘e’; 7 c3 = ‘s’; c4 = ‘,’; 8 a = “I am a computer.”; 9 printf(“%c%c%c%c ”, c1, c2, c3, c4); 10 printf (“%s\n”, a); 11 } prog2-6b.c output Yes, I am a computer.  

2.2 출력 함수 printf()와 입력 함수 scanf() char adr[30]; - 문자 30개 저장할 수 있는 30바이트의 메모리를 잡고 adr에 그 시작 주소를 저장한다. - adr[0]에서 adr[29]까지 모두 30개의 문자가 저장될 수 있다. - adr은 &adr[0]와 같은 의미이다. 즉 배열의 맨 앞 문자의 주소를 뜻한다. scanf(“%s”, adr); - adr 포인터가 가리키는 곳에 문자열을 읽어 들인다. - 123 main Street를 입력하더라고 첫 공백이 발견한 곳에서 입력을 종료한다. - 즉 adr이 가리키는 곳에는 123만이 저장된다. - adr[0], adr[1], adr[2]에 각각 문자 ‘1’, ‘2’, ‘3’이 저장되고, adr[3]에 널문자(즉 0)이 저장된다.

3 #include <stdio.h> 4 int main(void) { 5 char adr[30]; 1 /* File : prog2-7.c 2 문자열의 입력과 출력 */ 3 #include <stdio.h> 4 int main(void) { 5 char adr[30]; 6 printf (“Enter Address:”); 7 scanf(“%s”, adr); 8 printf (“Address is %s\n”, adr); 9 } prog2-7.c output Enter Address:123 Main Street Address is 123  

prog2-7b.c 문자열 3개를 각각 읽어 들여 출력 output 1 /* File : prog2-7b.c 2 문자열의 입력과 출력 */ 3 #include <stdio.h> 4 int main(void) { 5 char adr1[30], adr2[30], adr3[30]; 6 printf (“Enter Address:”); 7 scanf(“%s %s %s”, adr1, adr2, adr3); 8 printf (“Address is %s %s %s\n”, adr1, adr2, adr3); 9 } prog2-7b.c 문자열 3개를 각각 읽어 들여 출력 output Enter Address:123 Main Street Address is 123 Main Street  

2.3 출력 함수 putchar()와 입력 함수 getchar() int c; putchar와 getchar함수는 문자를 다루지만, 그 값을 정수형 변수(즉 c)에 저장하여 사용한다. putchar(‘a’); 문자 a가 표준출력(즉 화면)에 출력된다. putchar(97); 문자 a가 출력된다. 97은 문자 a의 아스키 코드이기 때문이다. putchar(‘\n’); 줄바꿈 문자가 출력된다. c = getchar(); 표준 입력(즉 키보드)에서 한 개의 문자 만을 읽어 들여 c에 저장한다.

prog2-8.c getchar와 putchar output 1 /* File : prog2-8.c 2 getchar와 putchar */ 3 #include <stdio.h> 4 int main(void) { 5 int c; 6 c = getchar(); 7 putchar(c); 8 } prog2-8.c getchar와 putchar output Hello H

2.5 예 제 1 /* File : ex2-1.c 2 C Language Programming 이라는 문자열을 화면에 출력 */ 3 #include <stdio.h> 4 int main(void) 5 { 6 printf(“C Language Programming\n”); 7 } 예제 2.1 output C Language Programming  

2 다음과 같은 패턴을 출력하는 프로그램을 작성하시오. */ 3 #include <stdio.h> 1 /* File : ex2-2.c 2 다음과 같은 패턴을 출력하는 프로그램을 작성하시오. */ 3 #include <stdio.h> 4 int main(void) 5 { 6 printf(“ CCC\n”); 7 printf(“ CCCCCC\n”); 8 printf(“ CCCCCCCC\n”); 9 printf(“CCCC CCC\n”); 10 printf(“CC\n”); 11 printf(“CC CCCCC\n”); 12 printf(“CC CC\n”); 13 printf(“CC CC\n”); 14 printf(“CC CCCCC\n”); 15 printf(“CC\n”); 16 printf(“CCCC CCC\n”); 17 printf(“ CCCCCCCC\n”); 18 printf(“ CCCCCC\n”); 19 printf(“ CCC\n”); 20 } 예제 2.2

CCC CCCCCC CCCCCCCC CCCC CCC CC CC CCCCC CC CC   예제 2.2 output

2 변수 a에 9, b에 3을 배정한 후 두 변수의 곱셈,나눗셈,덧셈,뺄셈을 하시오.*/ 1 /* File : ex2-3.c 2 변수 a에 9, b에 3을 배정한 후 두 변수의 곱셈,나눗셈,덧셈,뺄셈을 하시오.*/ 3 #include <stdio.h> 4 int main(void) 5 { 6 int a, b, c, d, e, f; 7 a=9; b=3; 8 c=a*b; d=a/b; 9 e=a+b; f=a-b; 10 printf(“%d*%d=%d\n”, a, b, c); 11 printf(“%d/%d=%d\n”, a, b, d); 12 printf(“%d+%d=%d\n”, a, b, e); 13 printf(“%d-%d=%d\n”, a, b, f); 14 } 예제 2.3 output 9*3=27 9/3=3 9+3=12 9-3=6  

2 a=3, b=1, c=6, d=3이라 할 때 (a-b)*(c-d)/(a+d)를 구하시오. */ 1 /* File : ex2-4.c 2 a=3, b=1, c=6, d=3이라 할 때 (a-b)*(c-d)/(a+d)를 구하시오. */ 3 #include <stdio.h> 4 int main(void) 5 { 6 int a, b, c, d; 7 8 a=d=3, b=1, c=6; 9 printf(“(%d-%d)*(%d-%d)/(%d+%d)=%d\n”, 10 a, b, c, d, a, d, (a-b)*(c-d)/(a+d)); 11 } 예제 2.4 output (3-1)*(6-3)/(3+3)=1  

2 x, y, z에 100을 배정한 후 x/25, y/35, z/45의 몫과 나머지를 구하시오.*/ 1 /* File : ex2-5.c 2 x, y, z에 100을 배정한 후 x/25, y/35, z/45의 몫과 나머지를 구하시오.*/ 3 #include <stdio.h> 4 int main(void) 5 { 6 int x, y, z; 7 8 x = y = z = 100; 9 printf(“%d/25 = %d ... %d\n”, x, x/25, x%25); 10 printf(“%d/35 = %d ... %d\n”, y, y/35, y%35); 11 printf(“%d/45 = %d ... %d\n”, z, z/45, z%45); 12 } 예제 2.5 [해 설] output %는 정수의 나눗셈의 나머지를 구하는 연산자(modulus operator). 100/25 = 4 ... 0 100/35 = 2 ... 30 100/45 = 2 ... 10

2 a=10.23, b=3.64, c=1.23 이라 할 때, 수식 (a+b)/c의 결과를 구하시오. */ 1 /* File : ex2-6.c 2 a=10.23, b=3.64, c=1.23 이라 할 때, 수식 (a+b)/c의 결과를 구하시오. */ 3 #include <stdio.h> 4 int main(void) 5 { 6 float a=10.23, b=3.64, c=1.23; 7 float m; 8 9 m = (a+b)/c; 10 printf(“(%f + %f) / %f = %f\n”, a, b, c, m); 11 } 예제 2.6 output (10.230000 + 3.640000) / 1.230000 = 11.276423

2 12345/321을 과학적 표기법(e형 또는 E형)으로 출력하는 프로그램을 작성하시오.*/ 1 /* File : ex2-7.c 2 12345/321을 과학적 표기법(e형 또는 E형)으로 출력하는 프로그램을 작성하시오.*/ 3 #include <stdio.h> 4 int main(void) 5 { 6 float a, b, c; 7 a = 12345, b = 321; 8 c = a / b; 9 printf(“%e\n”, c); 10 } 예제 2.7 [해 설] output 줄7 : a, b가 float형이므로 정수 12345와 321이 float형으로 바뀌어 저장됨. 3.845794e+001

2 ASCII 코드를 이용하여 “A B C D E”를 출력하는 프로그램을 작성하시오. */ 1 /* File : ex2-8.c 2 ASCII 코드를 이용하여 “A B C D E”를 출력하는 프로그램을 작성하시오. */ 3 #include <stdio.h> 4 int main(void) 5 { 6 int a, b, c, d, e; 7 a = 65, b = 66, c = 67, d = 68, e = 69; 8 printf(“%c %c %c %c %c\n”, a, b, c, d, e); 9 } 예제 2.8 [해 설] output - 대문자 ‘A’, ‘B’, ‘C’, ‘D’, ‘E’의 아스키 코드는 각각 65, 66, 67, 68, 69이다. - 즉 문자를 표기하는 ‘A’는 실제는 1 바이트의 작은 정수 65로 저장된다. - 예를 들어 a = 65는 a = ‘A’와 동일하다. A B C D E

2 “Good Mornig!”을 “good”과 “Morning!”으로 분리하여 별개의 포인터가 1 /* File : ex2-9.c 2 “Good Mornig!”을 “good”과 “Morning!”으로 분리하여 별개의 포인터가 3 가리키게 한 후 출력시키는 프로그램을 작성하시오. */ 4 #include <stdio.h> 5 int main(void) 6 { 7 char *p1, *p2; 8 p1 = “Good”; 9 p2 = “Morning!”; 10 printf(“%s %s\n”, p1, p2); 11 } 예제 2.9 output Good Morning!

2 수치 1988을 필드폭 4자리에 좌측 정렬하여 출력한 후, 또한 필드폭 10자리에 1 /* File : ex2-10.c 2 수치 1988을 필드폭 4자리에 좌측 정렬하여 출력한 후, 또한 필드폭 10자리에 3 우측 정렬하여 출력하는 프로그램을 작성하시오. */ 4 #include <stdio.h> 5 int main(void) 6 { 7 int a = 1988; /* 변수 선언 시에 직접 그 값을 배정할 수 있음 */ 8 9 printf(“%-4d\n”, a); 10 printf(“%10d\n”, a); 11 } 예제 2.10 [해 설] output - “%4d\n”에서 %d는 십진 정수를 의미하며, 4는 해당 인수(즉 a)의 출력용 필드폭이 4자리라는 의미이며, %뒤의 -는 출력 시에 왼쪽으로 정렬하라는 의미이다. 1988

3 우측 정렬하여 출력하는 프로그램을 작성하시오. */ 4 #include <stdio.h> 1 /* File : ex2-11.c 2 3.14159를 좌측 정렬하여 출력한 후, 또한 필드폭 10자리에 3 우측 정렬하여 출력하는 프로그램을 작성하시오. */ 4 #include <stdio.h> 5 int main(void) 6 { 7 const float a = 3.14159; 8 9 printf(“%-10.5f\n”, a); 10 printf(“%10.5f\n”, a); 11 } 예제 2.11 [해 설] output - %10.5f는 필드폭을 10으로 잡고, 그 중 소수점 미만 5자리로 실수를 출력하라는 뜻이다. - % 뒤에 –가 있으면 좌측정렬이고 없으면 우측정렬이다. - const는 상수로 그 값이 변경되지 않음을 뜻하며, 위에서는 생략해도 무방하다. 3.14159

2 다음같은 패턴을 출력하는 프로그램을 작성하시오. */ 3 #include <stdio.h> 1 /* File : ex2-12.c 2 다음같은 패턴을 출력하는 프로그램을 작성하시오. */ 3 #include <stdio.h> 4 int main(void) 5 { 6 char a = ‘*’; 7 printf(“%1c%2c%2c%2c%2c\n”, a, a, a, a, a); 8 printf(“%2c%2c%2c%2c\n”, a, a, a, a); 9 printf(“%3c%2c%2c\n”, a, a, a); 10 printf(“%4c%2c\n”, a, a); 11 printf(“%5c\n”, a); 12 } 예제 2.12 [해 설] output 예를 들어 마지막 printf문장의 첫 인수내의 %5c는 다음 인수인 a를 필드폭 5자리에 우측정렬하고, 문자로 출력하라는 의미이다. * * * * * * * * * * * * * * *

2 실수 두 개를 입력시켜 그 합을 구하는 프로그램을 작성하시오. */ 3 #include <stdio.h> 1 /* File : ex2-13.c 2 실수 두 개를 입력시켜 그 합을 구하는 프로그램을 작성하시오. */ 3 #include <stdio.h> 4 int main(void) 5 { 6 float a, b; 7 8 scanf(“%f %f”, &a, &b); 9 printf(“%f + %f = %f\n”, a, b, a+b); 10 } 예제 2.13 [해 설] output scanf등으로 입력받을 때에는, 저장하려는 변수의 주소를 인수로 사용한다. 즉 a에 입력값을 저장하려면, &a를 인수로 사용한다. 12.356 521.219971 12.356000 + 521.219971 = 533.575971

2 키보드에서 한 문자를 입력시켜, 그 코드값을 출력하는 프로그램을 작성하시오. */ 1 /* File : ex2-14.c 2 키보드에서 한 문자를 입력시켜, 그 코드값을 출력하는 프로그램을 작성하시오. */ 3 #include <stdio.h> 4 int main(void) 5 { 6 printf(“%d\n”, getchar()); 7 } 가령 9를 입력하면 문자 ‘9’의 아스키 코드값 57 이 출력된다. 9 57

2 컴파일/링크시킨 file을 mycopy라 하자. */ 3 #include <stdio.h> 1 /* File : mycopy.c 2 컴파일/링크시킨 file을 mycopy라 하자. */ 3 #include <stdio.h> 4 int main(void) 5 { 6 int c; 7 while ((c=getchar()) != EOF) /* stdin에서 입력 */ 8 putchar(c); /* stdout으로 출력 */ 9 } 예제 2.15 (입출력 방향전환) [해 설] - 표준입력에서 입력을 받아 그와 동일한 복사본을 표준출력으로 출력시키는 프로그램. - getchar()로 한 문자씩 c로 읽어들여 file의 끝(EOF)이 아니라면, putchar(c)로 출력한다.

<UNIX/LINUX 상에서의 동작> cat afile afile의 내용을 화면에 출력한다. sort > tmp > tmp는 sort의 표준출력을 화면 대신 tmp라는 file로 방향전환한다. mycopy < afile > bfile mycopy의 표준입력을 키보드 대신 afile에서 받고, 표준출력은 화면대신 bfile로 방향 전환한다. 만약 입력을 화면에서 받을 경우 입력의 끝은 UNIX/LINUX의 경우 ctrl-D로 한다. DOS의 경우는 입력의 끝은 ctrl-Z로 표시한다. [해 설] output cat afile This is a test file. Second line exists. cc –o mycopy mycopy.c mycopy < afile > bfile cat bfile