g+ summer c study 20130709(3일차)
DESCRIPTION
3일차 20130709 7월9일 스터디에 대한 PPT 자료입니다. 다룬 내용은 입력(scanf)과 반복문(for문) 입니다. 숙제는 프로젝트 오일러를 활용하였습니다. 다소 어렵습니다만, 견뎌야 합니다. 화이팅!!TRANSCRIPT
G+ Summer C Programming Study
1
2013. 07. 09
19:30G-Lab
2
잠시 스터디에 앞서 공지를 하자면 ,오늘부터 숙제가 많습니다 . 그렇기에…오늘 바로 가셔서 안 하시면 , 쌓여서 버틸 수가 없는 상황이 올 겁니다 .
다 여러분을 위한 것 입니다 .힘내십시오 !뭔가 얻어가려면 노력 해야만 합니다 .
3
지난 시간복습
4
C 언어를 공부하면무엇을 할 수 있을까 ?
5
C 언어의 모든 문장은 ____ 으로 끝난다 !
6
바구니의 이름의 규칙 ?규칙이 왜 ?!
7
C 언어에서 어떤 조건 별로할 일을 나눌 때 어떻게 할까요 ?
8
오늘의 TODO입력 ?
반복하는 일들 ?!
9
저번시간에 우리는 바구니를 배웠고 ,바구니에 값을 대입하는 방법을단순히 = 을 이용해서 하였습니다 .
10
컴퓨터의 기본입력을담당하는 것은 무엇일까요 ?
11
아직 사실 저희는 바구니에대해 자세히 배우지 않았습니다 .
12
우리가 바구니를 만들면컴퓨터는 내부적으로 이러한 일을 합니다 .
13
1. int A; 를 하게 되면2. int 형 데이터를 저장할 수 있는 공간을 만듭니다 .3. 그 공간은 메모리라고 하는 것 안에 위치합니다 .4. 위치한다는 말은 즉 , 주소가 있다는 것입니다 .
바구니 이름 : A바구니 종류 : int (정수 )바구니 크기 : 4바구니 주소 : 11
A
14
C 언어에서는바구니의 주소를 얻기 위해
& 라는 연산자를 사용합니다 .
15
int A = 5; // 바구니 생성 , 5 대입printf(“%d”, A); // 바구니 값 출력printf(“%d”, &A); // 바구니 주소 출력
16
입력하기 위해서는주소가 필요하기 때문에
주소를 배웠습니다 .
17
입력을 위한 함수는다행히도 첫 시간에 배웠던
printf 와 유사하게scanf 라고 합니다 .
18
char inputC;scanf(“%c”, & inputC);
19
int inputI;scanf(“%d”, &inputI);
20
float inputF;scanf(“%f”, &inputF);
21
char a, b;scanf(“%c %c”, &a, &b);
22
int a, b;scanf(“%d %d”, &a, &b);
23
간단한 입력 프로그램을 짜봅시다 .
두 개의 정수 20, 10 을 입력 받아서두 수의 사칙연산결과를
다음과 같이 출력하시오 .a+b=30, a-b=10, a*b=200, a/b=2
24
#include <stdio.h> // 기본 입출력 사용int main(void) // 메인 (Entry Point){
int a, b; // 바구니 생성scanf(“%d %d”, &a, &b);
// 바구니에 값 입력printf(“a+b=%d, “, a+b); // 덧셈
출력printf(“a-b=%d, “, a-b); // 뺄셈
출력printf(“a*b=%d, “, a*b); // 곱셈
출력printf(“a/b=%d\n”, a/b); // 나눗셈
출력return 0; // Entry Point 종료
}
25
자 백지를 드리겠습니다 .금방 보셨던 코드를 짜봅시다 .
두 개의 정수 20, 10 을 입력 받아서두 수의 사칙연산결과를
다음과 같이 출력하시오 .a+b=30, a-b=10, a*b=200, a/
b=2
26
Practice Practice!
두 개의 정수를 입력 받아서두 수 중 큰 수를 출력해주는
프로그램을 작성하시오 !
27
Practice Practice!
세 개의 정수를 입력 받아서세 수를 한 변의 길이로 하였을 때 ,
삼각형이 가능한지 판단하고 ,삼각형이라면 직각 , 예각 , 둔각
삼각형인지 판단하시오 .
28
Practice Practice!
두 개의 정수와 한 개의 문자를입력 받아서
문자가 + 이면 덧셈을 , - 이면 뺄셈을 ,
* 이면 곱셈을 , / 이면 나눗셈을 결과를 출력하시오 .
29
Practice Practice!
한 개의 정수를 입력 받아서정수에 해당하는 구구단을 출력하세요 .
ex: ) 2 를 입력했다면2*1=22*2=2
…2*9=18
30
금방 전 구구단을 출력할 때printf 를 몇 번이나 타이핑하셨나요 ?
31
잘 생각해보면printf 를 할 때
아래와 같은 규칙이 있었습니다 .
ex: ) printf(“%d*1=%d\n”, i, i*1); printf(“%d*2=%d\n”, i, i*2); printf(“%d*3=%d\n”, i, i*3);
32
이러한 일정한 규칙을 가지고반복적으로 일어나는 일들을
처리하는 문장을반복문이라고 합니다 .
33
사실 C 언어에는
여러가지 반복문이 있습니다 .
for 문while 문
do-while 문그러나 우리는 for 문만 배울 것 입니다 .
34
먼저 for 문for 문은 아래와 같이 생겼습니다 .
for(i=0; i<5; i++)
초기화 : 반복 문을 시작하기에 앞서 준비하는 일조건문 : 반복을 계속해야 할지 말지를 결정하는 문장
증감문 : 반복이 이루어질 때마다 변화시킬 일
35
예를 들어
for(i=5; i <= 10; i++) {반복할 일
}
이런 문장이 있다면i 의 값이 5 에서 10 이 될 때까지 ,(5,6,7,8,9,10)
6 번 반복할 것입니다 .
36
그럼 다시 이 문제를for 문을 이용해 구현해봅시다 .
한 개의 정수를 입력 받아서정수에 해당하는 구구단을 출력하세요 .
ex: ) 2 를 입력했다면2*1=22*2=2
…2*9=18
37
어떤가요 ?반복 문을 사용하는 이유를
알겠나요 ?
38
더 귀찮은 반복작업들을해보도록 하죠
39
Practice Practice!
한 개의 정수를 입력 받아서그 정수보다 작은 자연수 중에서
7 의 배수의 합을 구하시오ex: ) 10000 를 입력했다면
결과 : 7142142
40
머리 아프시죠 ? ㅠ . ㅠ힘내세요
여러분의 마음 알아요… 저도
41
모범답안#include <stdio.h>
int main(void){ int n = 10000; int i; int s = 0;
for(i = 0; i < n; i++) { if( i % 7 == 0 ) { s += i; } } printf(“ 결과 : %d\n", s);}
42
Practice Practice!
한 개의 정수를 입력 받아서그 정수보다 작은 자연수 중에서
소수를 모두 출력하시오 .ex: ) 10 를 입력했다면
결과 : 2 3 5 7
43
모범답안#include <stdio.h>
int main(void){ int n = 100; int i, j; int s = 0; int isPrime;
for(i = 2; i < n; i++) { isPrime = 1; for(j = 2; j < i; j++) { if ( i % j == 0 ) { isPrime = 0; break; } }
if( isPrime == 1 ) printf("%d ", i); } printf("\n");}
44
수고하셨습니다 . 숙제 공지
45
1. 먼저 http://euler.synap.co.kr 에 접속 ! ( 즐겨찾기추가 )
2. 회원가입을 해주세요 .3. 1 번부터 10 번 문제까지 숙제입니다 .4. 문제를 풀기 위한 C 코드는
wide.so 에/home/share/[ 아이디 ]/assignment/3/3-[ 문제번호 ].c 형식으로 제출해주세요 .