G+ Summer
C Programming Study
1
2013. 07. 09
19:30
G-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=%dn”, 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=2
2*2=2
…
2*9=18
30
금방 젂 구구단을 출력할 때
printf를 몇 번이나 타이핑하셨나요?
31
잘 생각해보면
printf를 할 때
아래와 같은 규칙이 있었습니다.
ex: ) printf(“%d*1=%dn”, i, i*1);
printf(“%d*2=%dn”, i, i*2);
printf(“%d*3=%dn”, 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=2
2*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(“결과: %dn", 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 형식
으로 제출해주세요.

G+ Summer C Study 20130709(3일차)