C Presentation

Download Report

Transcript C Presentation

C Presentation
for JAVA Seminar
정보통신학부
20063435
신예진
Index…!
# printf와 scanf 함수에 대한 고찰
1. printf 함수 이야기
2. scanf 함수 이야기
#다양한 형태의 반복문
1. while
2. do~while
3. for
#조건에 따른 흐름의 분기
2
1. if 와 else
2. loof의 생략과 탈출(continue & break)
3. Seminar
Switch에 의한 선택 실행
LAB1111
printf 함수 이야기
3
1.
printf는 문자열을 출력하는 함수이다.
2.
printf는 특수문자 표기가 가능하다.
3.
printf의 f는 formatted(서식화된)를 의미한다.
4.
필드 폭을 지정한다.
LAB1111 Seminar
특수문자 표기
특수문자
의미
\a
경고음 소리(alram)
\b
백스페이스(backspace)
\f
폼피드(form feed)
\n
개행(new line)
\r
캐리지 리턴
(carriage return)
\t
수평 탭(tab)
\v
수직 탭
\\
Back slash
기타 특수문자( ‘ , ” ..)
\후 작성
4
LAB1111 Seminar
scanf 함수 이야기
 Source
printf("두 개의 숫자를 입력하시오 : " );
scanf(“ %d %d ” , &input1, &input2);
while(input1<=input2)
{
for ( inja=1 ; inja<=9 ; inja++ )
{
for( i=input1 ; i<=input2 ; i++ )
{
printf("%d*%d=%d\t",i, inja, i*inja);
if(i==input1+2)
break;
}
5
LAB1111 Seminar
 Tip
문자나 숫자를 입력 받
을 때 ()안에 “와 %사이
에 공백이 없어야 한다.
=>오류예제
(계속)
scanf 함수 이야기
 Tip
입력받을 값을 저장
할 변수에는 반드시
&연산자를 붙여야 한
다.
6
LAB1111 Seminar

포인터 연산자를 표시하지
않았을 때의 프로그램 경
고 메시지 (실제로 컴퓨터
자체가 고장날 수 있음)
while(1)
{
printf("\n\n\t\t번호:");
scanf("%d",&main_choice);
puts("Do you want to continue
ordering? Y/N");
scanf("%s", &yes_no);
 버퍼의문제를 해결하기 위해
fflush(stdin) 이 rewind(stdin)을 이
용한다.
 But, fflush(stdin) 는 표준에 정의
if(yes_no=='y' || yes_no=='Y')
되지 않았고 rewind(stdin)는 콘
continue;
솔과 파일입출력에서 행동이
완전 다르기 때문에 문제가 발
else if(yes_no=='n'||yes_no=='N')
생을 만드는 코드가 됩니다.
break;
}
사용자가 입력할 문자는 한글자
이기 때문에
사용하였는
 So ,%c를
getch();
를 임의로 넣어서
데 알 수 없는
오류가방법이
나면서 좋다.
프
처리하는
7
LAB1111 Seminar
로그램이 종료 되었다
그래서. %s로 수정을 했더니 오
류없이 실행되었다
반복문 첫 번째
 반복조건이 만족할 때만 반복 내용을
실행
While ( 반복조건)
{
반복내용
}
 Ex Source
#include<stdio.h>
void main()
{
int i=1;
while(i<=10)
{
printf(“%d\n”);
i++;
}
}
<= 실행화면
8
LAB1111 Seminar
while
(계속)반복문 첫 번째
 Flow Chart
while
 while문의 중첩(응용)
while문 안에 while문을
포함시키는 것
반복조건이
TRUE?
false
true
루프 내
문장실행
 무한 루프 형태
true를 의미
while(1)
{
반복내용
}
Ex Source 보기
9
LAB1111 Seminar
반복문 두번째
 About do~while
반드시 do에 있는
내용을한번 실행하
고 그 후에 while문
의 조건에 따라 반
복여부가 결정
 Ex Source
#include<stdio.h>
void main()
{
int input;
int i=1;
printf("몇 단을 출력하시겠습니까?");
scanf("%d", &input);
do
{
 Tip
while문의 개념과 구
별하여 기억한다.
10
LAB1111 Seminar
do ~ while
input*i);
printf("%dX%d = %d\n", input, i,
i++;
}while(i<10)
}
for
반복문 세 번째
 About for…
기본적으로 초기문, 조
건문, 증감문으로 구성
 형태
for (초기문;조건문;증감문)
{
반복내용
}
 Tip
초기문이 맞지 않으면
for문 자체 반복내용에
접근하지 않는다.
 사용 예
- for(i = n-1 ; i !=0; i /= 2)
- for( ; ;)
- For( i=j ; j>i ; i+=j)
- And so On……
11
LAB1111 Seminar
(계속) for문의 활용
 Tip
for문이 중첩될 수록
시간복잡도는 제곱의 형
태로 증가하게 된다
=>참고 글 보기
12
LAB1111 Seminar
 For 문 중첩 예제
for(i=0;i<input/2+1;i++)
{
for(k=input;(k-i)/2>0;k--)
printf(" ");
for(j=0;j<=i*2;j++)
printf("*");
printf("\n");
}
} //별 찍기 프로그램
시간복잡도?
 1) for(i = 1; i < n ; i *= 2) ++k;
=>T(n)=O(n/2)=O(log n)
 2) for(i = n-1 ; i !=0; i /= 2) ++k;
=>T(n)=O(n/2)=O(log n)
 5) for(i = 0; i < n; ++i)
for(j = i; j < n ; ++j) / 4)
++k;
=>O(n^2)
 3) for(i = 0; i < n ; ++i)
if(i % 2== 0)
++k;
=> T(n)=O(n)
 4) for(i = 0; i < n; ++i)
for(j = 0; j < n ; ++j)
++k;
 6) for(i = 0; i < n; ++i)
for(j = 0; j < n ; ++j)
for(r = 0; r < 10 ; ++r)
++k;
 로그순서 :
1> log n > n > n log n > n^2 > n^2 log
n > n^3 > n^3 log n ....
=>최악의 경우 O(n^2)
출처 : NAVER 지식 IN
13
LAB1111 Seminar
조건에 따른 흐름의 분기
 About if…
실행의 조건문이 만족되는 경우, 실행하고
자 하는 내용이 선택적으로 실행된다.

14
 조건(삼항) 연산자
- 조건 ? A :B
조건이 true인 경우 A를 반환
형태
if ( 조건 )
{
실행하려는 내용1
}
else if (조건)
{
실행하려는 내용2
}
else
{
실행하려는 내용3
}
LAB1111 Seminar
조건이 false인 경우 B를
-
True
일때
Ex >
ch=(x<0)? ‘-’ : -’;
(ch==‘+’)? printf(“양수 \n”) :
printf(“음수 \n”);
printf(“절대 값 : %d\n”, (x<0)? 1*x :x);
False
일때
Continue & break 비교
 break
 continue
While(1)
{
While(1)
{
……..
if (x<0)
……..
15
……..
if (x<0)
……..
break;
continue;
}
printf(“ 끝\n”);
}
printf(“ 끝\n”);
LAB1111 Seminar
Switch VS if~else
 분기의 수가 많아지면 가급
적 switch문 사용
 Switch 문에서는 비교 연산
이 올 수 없다.
switch(n)
{
case n>1 :
printf(“AAA”);
 Case문으로 모든 경우를 다 표
시하고 다른 경우가 없다고 하
더라도 default : 값으로 예외의
경우를 꼭 처리한다.
Char형과
Int형만 가능
N을 실행할 영역을 결
정짓기 위한 정보
16
LAB1111 Seminar
case n==0 :
printf(“BBB”);
}
Switch (조건)
{
case 1 :
case 2:
defalt :
}
Switch 문 예제

switch( choice )
{
case 1 :
printf(" %lf " , fir+sec);break;
case 2 :
printf(" %lf" , fir-sec);break;
case 3:
printf(" %lf" , fir*sec);break;
case 4 :
if( sec==0 )
{
printf(" 0으로 나눌 수 없어요 \n");
}
else
printf(" %lf" , fir/sec);
default :
printf("몰라요\n");
}
17
LAB1111 Seminar