1 / 21

2014 년 1 학기 프로그래밍실습

2014 년 1 학기 프로그래밍실습. 제 6 강. 공지사항 1 차 시험 : 4 월 10 일 ( 목 ). 제어문 if … else if … else 의 사용 아래 예는 if … else if 를 사용하여 학점 계산을 하는 프로그램이다 . #include<stdio.h> main() { int score; char grade; printf(" 점수를 입력하십시오 : "); scanf("%d",&score); if(score>=90) grade='A';

gali
Download Presentation

2014 년 1 학기 프로그래밍실습

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2014년 1학기프로그래밍실습 제 6 강

  2. 공지사항 1차 시험: 4월 10일(목)

  3. 제어문 if … else if … else 의 사용 아래 예는 if … else if 를 사용하여 학점 계산을 하는 프로그램이다. #include<stdio.h> main() { int score; char grade; printf("점수를 입력하십시오: "); scanf("%d",&score); if(score>=90) grade='A'; else if(score>=80) grade='B'; else if(score>=70) grade='C'; else grade='F'; printf("학점은 %c입니다.\n",grade); }

  4. 이차방정식의 실근을 구하는 예 아래 예는 방정식 ax2 + bx + c = 0의 실근을 구하는 프로그램이다. #include<stdio.h> #include<math.h> main() { double a, b, c, D, r1, r2; printf("a, b, c 입력: "); scanf("%lf %lf %lf",&a,&b,&c); D=b*b-4.*a*c; //판별식 if(D>0.){ r1=(-b+sqrt(D))/(2.*a); r2=(-b-sqrt(D))/(2.*a); printf("두 실근: %g, %g\n",r1, r2); } else if(D==0.){ // 실수끼리 등호(==)로 비교하는 것은 좋지 않음 r1=-b/(2.*a); printf("중근: %g\n",r1); } else printf("실근이 존재하지 않습니다.\n"); }

  5. 앞의 C코드를 다음과 같이 개선해 보자. #include<stdio.h> #include<math.h> main() { double a, b, c, D, r1, r2, epsilon=1.e-10, sqD; printf("a, b, c 입력: "); scanf("%lf %lf %lf",&a,&b,&c); D=b*b-4.*a*c; if(D>=epsilon){ sqD=sqrt(D); // 반복되는 복잡한 식은 한 번만 계산 r1=(-b+sqD)/(2.*a); r2=(-b-sqD)/(2.*a); printf("두 실근: %g, %g\n",r1, r2); } else if(fabs(D)<epsilon){ // 등호(==)로 비교하는 것을 피함 r1=-b/(2.*a); printf("중근: %g\n",r1); } else printf("실근이 존재하지 않습니다.\n"); }

  6. 10,000원짜리 지폐 하나로 가격이 500원부터 10,000원까지의 범위에 있는 물건을 하나 구입하는 경우, 거스름돈이 얼마인지 계산하고 거스름돈의 1,000원짜리 지폐의 수와 500원짜리 동전의 수가 각각 몇 개인지도 계산하는 프로그램을 작성하여 보자. (단, 물건 가격은 500의 배수이며, 거스름돈은 1,000원짜리지폐와 500원 짜리 동전만 사용한다. ) 입출력 예를 보면 다음과 같다. 물건값을 입력하십시오.(500~10000, 500의배수): 3500 거스름돈: 6500원 1000원짜리 지폐: 6장 500원짜리 동전: 1개

  7. 힌트: int price,change,n1000,n500; price: 물건 가격 change: 거스름돈 n1000: 거슬러 줄 1000원짜리 지폐의 수 n500: 거슬러 줄 500원 동전의 수 change=10000-price; n1000=change/1000; n500=change%1000/500;

  8. 완성된(?)C코드 #include<stdio.h> main() { int price,change,n1000,n500; printf("물건값을 입력하십시오.(500~10000, 500의배수): "); scanf("%d",&price); change=10000-price; printf("거스름돈: %d원\n",change); n1000=change/1000; n500=change%1000/500; printf(" 1000원짜리 지폐: %d장\n",n1000); printf(" 500원짜리 동전: %d개\n",n500); }

  9. 개선된 C코드 #include<stdio.h> main() { int price,change,n1000,n500; printf("물건값을 입력하십시오.(500~10000, 500의배수): "); scanf("%d",&price); if(price>10000 || price<0) printf("입력 오류.\n"); else if(price%500!=0) printf("입력 오류.\n"); else{ change=10000-price; printf("거스름돈: %d원\n",change); n1000=change/1000; n500=change%1000/500; printf(" 1000원짜리 지폐: %d장\n",n1000); printf(" 500원짜리 동전: %d개\n",n500); } }

  10. 앞의 예는 다음과 같이 바꿔도 된다. #include<stdio.h> main() { int price,change,n1000,n500; printf("물건값을 입력하십시오.(500~10000, 500의배수): "); scanf("%d",&price); if(price>=500 && price <=10000 && price%500==0){ change=10000-price; printf("거스름돈: %d원\n",change); n1000=change/1000; n500=change%1000/500; printf(" 1000원짜리 지폐: %d장\n",n1000); printf(" 500원짜리 동전: %d개\n",n500); } else printf("입력 오류.\n"); }

  11. 제어문 switch의 사용 #include<stdio.h> main() { int score; char grade; printf("점수를 입력하십시오: "); scanf("%d",&score); score/=10; switch(score){ case 10: grade='A'; break; case 9: grade='A'; break; case 8: grade='B'; break; case 7: grade='C'; break; default: // score가 9, 8, 7이 아닌 모든 경우 grade='F'; break; } printf("학점은 %c입니다.\n",grade); }

  12. switch 문 사용시 주의 사항 • switch(정수식){ • ……… • } • 의 형태이며 switch 다음 괄호 ( ) 안에는 정수식만 가능하다. • 전체의 ……… 은 반드시 중괄호{ } 로 둘러싼다. • 각각의 case는 정수식의 값에 따라 수행하며 해당되는 값이 • 없을 때는 default의 내용을 수행한다. 또한 각 case는 • case 정수: • 와 같이 끝에 콜론 : 을 붙여준다. • 각각의 case는 반드시 break;를 이용하여 벗어나야 한다. • 각 case마다 수행해야 할 내용이 여러 줄이라도 중괄호{ }로 • 묶어줄 필요는 없다.

  13. 다음 프로그램의 내용이 무엇인지 이해해 보자. #include<stdio.h> main() { int a,r; printf("양의 정수를 입력하십시오: "); scanf("%d",&a); r=a%3; switch(r){ case 1: printf("a를 3으로 나눈 나머지는 1입니다..\n"); printf("a에 2를 더하면 3의 배수가 됩니다.\n"); break; case 2: printf("a를 3으로 나눈 나머지는 2입니다..\n"); printf("a에 1를 더하면 3의 배수가 됩니다.\n"); break; default: printf("a는 3의 배수 입니다..\n"); break; } }

  14. break를 의도적으로 생략한 switch문 #include<stdio.h> main() { int point,a; printf("보너스 포인트를 입력하십시오.\n"); scanf("%d",&point); if(point>=10000) a=3; else if(point>=5000) a=2; else if(point>=1000) a=1; else a=0; printf("사은품 내역:\n"); switch(a){ case 3: printf("김치 냉장고\n"); case 2: printf("전자레인지\n"); case 1: printf("주방 세제 및 비누, 치약 세트\n"); break; default: printf("없음(포인트가 부족합니다.)\n"); } }

  15. 물음표연산자 x = (조건식) ? y: z의 형태 조건식이 참이면 y값을 x에 저장 조건식이 거짓이면 z값을 x에 저장 예: 두 수의 최댓값을 구하는 예 #include<stdio.h> main() { int a, b, max; scanf("%d%d",&a,&b); max=(a>b)?a:b; printf("a=%d b=%d max=%d\n",a,b,max); } C코드: 04_01.c ~ 04_09b.c

  16. 제 5 장: 순환문 for문을 사용하여 같은 것을 반복하여 출력하는 예: #include<stdio.h> main() { int i; for(i=1;i<4;i++) // 부등호 < 에 주의 printf("안녕하세요.\n"); } 출력: 안녕하세요. 안녕하세요. 안녕하세요.

  17. 변형된 예: #include<stdio.h> main() { int i; for(i=1;i<=4;i++) // 부등호 <= 에 주의 printf("i=%d: 안녕하세요.\n",i); } 출력: (i 값의 변화를 살펴 볼 것) i=1: 안녕하세요. i=2: 안녕하세요. i=3: 안녕하세요. i=4: 안녕하세요.

  18. 순환문 for의 사용 for( A ; B ; C){ ……… } A : for문이 시작될 때 A의 내용으로 한 번만 초기화 된다. B : B 의 조건이 만족되는 한 { ………}의 내용을 계속 반복한다. B 의 내용이 만족되지 않으면 for를 벗어난다. C : { ………}의 내용을 한번 반복 할 때 마다 C 의 내용을 수행하여 변화를 준다. 주의:(1) A,B,C 사이는 세미콜론 ; 으로 구분한다. (2)……… 의 내용이 한 줄일 때는 중괄호{}를 생략할 수 있다.

  19. 1 + 2 + 3 + ... + 100 의 값을 구해 보자. 정수형 변수 i, s 변수 i : 1, 2, 3, ..., 100의 변하는 자연수를 저장함 변수 s : 1부터 i까지의 합을 저장 i가 1일때: i값은 1, s값은 1 i가 2일때: i값은 2, s값은 1 + 2 i가 3일때: i값은 3, s값은 1 + 2 + 3 . . . . . . . . . . . i가 100일때: i값은 100, s값은 1 + 2 + 3 + ... + 100 (이 때의 s값을 출력하면 된다.)

  20. 1부터 100까지 자연수의 합을 구하는 C코드: #include<stdio.h> main() { int i,s=0; for(i=1;i<=100;i++) s+=i; // s=s+i;와 같다. printf("1부터 100까지의 합은 %d입니다.\n",s); } 출력: 1부터 100까지의 합은 5050입니다.

More Related