전기실험회로 2 (C언어)
강의 (14)
우석대학교 에너지전기공학과
이우금 교수
5-4. 다중 if 문 다중 if 문의 개념: if 문 안에 다른 if 문이 들어갈 수 있음 다중 if 문 다중 if-else 문 연속적인 if 문 2 if( score>=80) if(score>=90) printf(“A 학점입니다\n”); A학점입니다 참 거짓 𝑠𝑐𝑜𝑟𝑒 ≥ 80 𝑠𝑐𝑜𝑟𝑒 ≥ 90 참 거짓 (지난 시간 강의 복습) 지난 시간 강의 복습 A학점 참 거짓 𝑠𝑐𝑜𝑟𝑒 ≥ 80 𝑠𝑐𝑜𝑟𝑒 ≥ 90 참 거짓 B학점 if( score>=80) if(score>=90) printf(“A 학점입니다\n”); else printf(“B 학점입니다\n”) if( 조건식 1) printf(“문장1\n”); else if(조건식 2) printf(“문장2\n”); ⋮ else printf(“문장 \n”) <다중 if 문 흐름도> <다중 if-else 문 흐름도>
해석상의 혼동을 방지하기 위해, else절은 무조건 가까운 if와 매치 되도록 정함.
else절을 첫 번째 if와 매치 시키는 방법: 중괄호를 사용하여, else절을 첫 번째 if에 매치 시킴
if( score>=80)
if(score>=90)
printf(“A 학점입니다\n”);
else
printf(“B 학점입니다\n”)
if( score>=80)
{
if(score>=90)
printf(“A 학점입니다\n”);
}
else
printf(“C 학점입니다\n”)
A학점 참 거짓𝑠𝑐𝑜𝑟𝑒 ≥ 80
𝑠𝑐𝑜𝑟𝑒 ≥ 90
참 거짓 C학점 A학점 참 거짓𝑠𝑐𝑜𝑟𝑒 ≥ 80
𝑠𝑐𝑜𝑟𝑒 ≥ 90
참 거짓 B학점<else절이 두 번째 if와 매치> <else절이 첫 번째 if와 매치>
(예제2) 이차방정식의 근을 구하는 프로그램을 작성하라 이차방정식의 기본형:
𝑎𝑥
2+ 𝑏𝑥 + 𝑐 = 0
조건식 (1)𝑎
가0
이면, 주어진 방정식의 근𝑥 = −
𝑐 𝑏𝑎
가0
이므로𝑏𝑥 = 𝑐
(2) 판별식 <0 이면, 실근은 존재하지 않음𝑏
2− 4𝑎𝑐 < 0
(3) 위의 2가지 조건에 해당되지 않으면, 근의 공식 적용𝑥 =
−𝑏± 𝑏2−4𝑎𝑐 2𝑎5-4. 다중 if 문
if (a == 0)
printf(“방정식의 근 \n");
else
if (판별식>=0)
printf("방정식의 근 \n");
else
printf(“실근이 존재하지 않음 \n");
print (x) 참 거짓𝑎 = 0
참 판별식≥ 0
거짓 print (x) print (x) <flow chart> <조건문>(예제2 계속) 이차방정식의 근을 구하는 프로그램을 작성하라 변수지정 (이차방정식의 계수) 변수(실수):
𝑎, 𝑏, 𝑐
(scanf_s 사용) //𝑎𝑥
2+ 𝑏𝑥 + 𝑐 = 0
변수지정 (판별식) 변수(실수):𝑑𝑖𝑠
// 판별식:𝑑𝑖𝑠 = 𝑏
2− 4𝑎𝑐
조건식 (1)𝑎
가0
이면, 주어진 방정식의 근𝑥 = −
𝑐 𝑏𝑎
가0
이므로𝑏𝑥 = 𝑐
(2) 판별식 <0 이면, 실근은 존재하지 않음:𝑏
2− 4𝑎𝑐 < 0
(3) 위의 2가지 조건에 해당되지 않으면, 근의 공식 적용:𝑥 =
−𝑏± 𝑏2−4𝑎𝑐 2𝑎※note:
𝑏
2− 4𝑎𝑐
𝑠𝑞𝑟𝑡 𝑏
2− 4𝑎𝑐
5-4. 다중 if 문 계수 a, b, c를 입력하시오: 0 1 2 일차방정식:1.000𝑥 + 2.000 = 0
𝑥 = −2.000000
#include <stdio.h>
#include <math.h>
int main(void)
{
double a, b, c, dis;
⋮
return 0;
}
계수 a, b, c를 입력하시오: 1 1 -2 이차방정식:1.000𝑥 ^^2 + 1.000𝑥 − 2.000 = 0
판별식> = 0
𝑥1 = −1.000000
𝑥2 = −1.000000
계수 a, b, c를 입력하시오: 1 1 1 이차방정식:1.000𝑥^^2 + 1.000𝑥 + 1.000 = 0
판별식< 0
헤더 파일 (수학관련)(예제2 검토) 이차방정식의 근을 구하는 프로그램을 작성하라 변수지정 (이차방정식의 계수) 변수(실수):
𝑎, 𝑏, 𝑐
(scanf_s 사용) //𝑎𝑥
2+ 𝑏𝑥 + 𝑐 = 0
변수지정 (판별식) 변수(실수):𝑑𝑖𝑠
// 판별식:𝑑𝑖𝑠 = 𝑏
2− 4𝑎𝑐
조건식 (1)𝑎
가0
이면, 주어진 방정식의 근𝑥 = −
𝑐 𝑏𝑎
가0
이므로𝑏𝑥 = 𝑐
(2) 판별식 <0 이면, 실근은 존재하지 않음:𝑏
2− 4𝑎𝑐 < 0
(3) 위의 2가지 조건에 해당되지 않으면, 근의 공식 적용:𝑥 =
−𝑏± 𝑏2−4𝑎𝑐 2𝑎5-4. 다중 if 문
#include <stdio.h>
#include <math.h>
int main(void)
{
double a, b, c, dis;
printf("계수 a, b, c 를 입력: ");
scanf_s("%lf%lf%lf", &a, &b, &c);
if (a == 0)
{
printf("일차방정식: (%lfx) + (%lf) = 0\n", b, c);
printf("x = %lf", -c / b);
}
else
print (x) 참 거짓 𝑎 = 0 참 판별식 > 0 거짓 print (x) print (x)(예제2 검토) (1)
𝑎
가0
이면, 주어진 방정식의 근𝑥 = −
𝑐 𝑏𝑎
가0
이므로𝑏𝑥 = 𝑐
(2) 판별식 <0 이면, 실근은 존재하지 않음:𝑏
2− 4𝑎𝑐 < 0
(3) 위의 2가지 조건에 해당되지 않으면, 근의 공식 적용:𝑥 =
−𝑏± 𝑏2−4𝑎𝑐 2𝑎𝑠𝑞𝑟𝑡 𝑏
2− 4𝑎𝑐
5-4. 다중 if 문if (a == 0)
⋮
else
{
printf("이차방정식: (%lfx^^2) + (%lfx) + (%lf) = 0\n", a, b, c);
dis = (b*b - 4.0*a*c);
if (dis >= 0)
{
printf("판별식>=0\n");
printf("x1 = %lf \n", (-b + sqrt(dis)) / (2.0*a));
printf("x2 = %lf \n", (-b - sqrt(dis)) / (2.0*a));
}
else
{
printf("판별식<0\n");
printf("실근이 존재하지 않음");
}
}
return 0;
계수 a, b, c를 입력: 0 1 2 일차방정식: ⋯𝑥 = −2.000000
계수 a, b, c를 입력: 1 1 -2 이차방정식:⋯
판별식> = 0
𝑥1 = 1.000000
𝑥2 = −2.000000
계수 a, b, c를 입력: 1 1 1 이차방정식:⋯
판별식< 0
실근이 존재하지 않음5-5. switch 문 switch 문의 개념 if 문에서는 참이냐 거짓이냐에 따라 실행할 문장이 둘 중에서 하나로 결정됨. 만약, 프로그램상에서 어떤 식의 값에 따라 선택할 수 있는 경로가 여러 개가 필요한 경우? if-else 문으로 표현이 가능하나 번거로움. C언어에서는 제어식의 값에 따라 여러 경로 중에서 하나를 선택할 수 있는 switch문이 제공됨. switch 문의 실행 제어식을 계산하여 c1, c2, … 등과 비교. c1, c2,… 은 모두 정수. 제어식과 c1, c2, … 중 일치하는 값이 있으면 관련문장 차례로 실행. break 문에 도달하면, switch 문은 종료 ※ break 문이 없으면, 계속해서 다음 절의 문장을 실행함 !!! 만약, 제어식과 일치하는 정수 값을 찾지 못하면 default 절이 실행. default문은 생략 가능하나, 가급적 포함시키는 것 바람직함. 5-5. switch 문
switch( 제어식)
{
case c1:
문장1;
break;
case c2:
문장2;
break;
⋮
default:
문장d;
break;
}
<흐름도> <형식> 제어식 문장1 문장2 문장3 문장4 𝐶1 𝐶2 𝐶3 해당사항 없는 경우 switch 문 Vs. if-else 문 switch 문은 if-else 문으로 바꿀 수 있음. 선택해야 하는 경우의 수가 많아 지면 (대략 5개 이상) switch문을 사용하는 것이 간결해 보임. 5-5. switch 문 <if-else 문> <switch 문>
𝑖𝑛𝑡
𝑚𝑎𝑖𝑛(
𝑣𝑜𝑖𝑑
)
{
𝑖𝑛𝑡
𝑛𝑢𝑚𝑏𝑒𝑟;
𝑠𝑐𝑎𝑛𝑓
%d
, &𝑛𝑢𝑚𝑏𝑒𝑟 ;
𝑖𝑓
( 𝑛𝑢𝑚𝑏𝑒𝑟 == 0 )
𝑝𝑟𝑖𝑛𝑡𝑓(
"없음\n
");
𝑒𝑙𝑠𝑒 𝑖𝑓
( 𝑛𝑢𝑚𝑏𝑒𝑟 == 1 )
𝑝𝑟𝑖𝑛𝑡𝑓(
"하나\n
");
𝑒𝑙𝑠𝑒 𝑖𝑓
( 𝑛𝑢𝑚𝑏𝑒𝑟 == 2 )
𝑝𝑟𝑖𝑛𝑡𝑓(
"둘\n");
𝑒𝑙𝑠𝑒
𝑝𝑟𝑖𝑛𝑡𝑓(
"많음\n");
}
𝑠𝑤𝑖𝑡𝑐ℎ
(𝑛𝑢𝑚𝑏𝑒𝑟)
{
𝑐𝑎𝑠𝑒
0:
𝑝𝑟𝑖𝑛𝑡𝑓(
"없음\n");
𝑏𝑟𝑒𝑎𝑘;
𝑐𝑎𝑠𝑒
1:
𝑝𝑟𝑖𝑛𝑡𝑓(
"하나\n");
𝑏𝑟𝑒𝑎𝑘;
𝑐𝑎𝑠𝑒
2:
𝑝𝑟𝑖𝑛𝑡𝑓(
“둘\n");
𝑏𝑟𝑒𝑎𝑘;
𝑑𝑒𝑓𝑎𝑢𝑙𝑡
:
𝑝𝑟𝑖𝑛𝑡𝑓(
"많음\n");
𝑏𝑟𝑒𝑎𝑘;
}
(예시) 달의 일수를 출력하는 프로그램을 작성하라. 변수지정 변수(정수):
𝑚𝑜𝑛𝑡ℎ, 𝑑𝑎𝑦𝑠
1, 3, 5, 7, 8, 10,12월 = 한 달이 31일 & 2월: 한 달이 28일 & 4, 6, 9, 11월: 한 달이 30일 의도적으로 break문 생략 달을 입력하시오: 2 2월의 일수는 28입니다 달을 입력하시오: 7 7월의 일수는 31입니다. 달을 입력하시오: 11 11월의 일수는 30 입니다int month, days;
printf("달을 입력하시오: ");
scanf_s("%d", &month);
switch (month)
{
case 2 :
days = 28;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
default:
days = 31;
break;
}
printf("%d월의 일수는 %d입니다.\n", month, days);
return 0;
}
1, 3, 5, 7, 8, 10, 12월을 처리함
switch 문에서 주의사항. 5-5. switch 문
switch
(number)
{
case x:
// 변수는 사용할 수 없다.
printf(
"x와 일치합니다. "
);
break
;
case (x+2):
// 변수가 들어간 수식은 사용할 수 없다.
printf(
"수식과 일치합니다. "
);
break
;
case 0.001:
// 실수는 사용할 수 없다.
printf(
"실수"
);
break
;
case “001”:
// 문자열은 사용할 수 없다.
printf(
"문자열"
);
break
;
}
Ch. 6. 반복문 6-1. 반복(iteration)의 개념 반복: 같은 처리과정을 여러 번 되풀이 하는 것. 반복구조 반복 구조란 아래와 같이 프로그램 진행 중에 어떤 조건이 만족될 때까지 루프를 계속 도는 구조. C에서 지원하는 반복문은 크게『while』과 『for』로 나누어 짐. 『for』: 반복횟수 이미 정해져 있어, 정해진 횟수 만큼 반복 『while』: 반복 횟수 대신 조건이 주어지며, 주어진 조건이 만족 할 때까지 반복 6-1. 반복의 개념
『while』Vs. 『for』
『while』- 계속 반복하다가 주어진 조건을 만족하면, 루프를 빠져나감. 『for』- 계속 반복하다가 정해진 횟수를 만족하면, 루프를 빠져나감.
6-2. 『while』문 주어진 조건이 만족되는 동안 문장들을 반복 실행하는 문장 구조. (예시) “Hellow World!”를 화면에 반복하여 출력하는 프로그램 6-2.『while』문
while (i < 10)
printf(“Hello World\n");
문장 거짓 참 조건 조건식 조건식이 충족될 때까지 반복실행<flow chart> <while 문의 형식>
#include <stdio.h>
int main(void)
{
int i=0;
while (i < 5)
{
printf("Hello World!\n");
i++;
}
return 0;
}
반복내용 반복조건:𝑖
가 5 이상이면 빠져나감 Hello World! Hello World! Hello World! Hello World! Hello World!(예시 2) 숫자를 입력하고, 입력된 숫자에 해당하는 구구단을 출력하는 프로그램을 작성하라 변수지정 변수(정수):
𝑛, 𝑖
조건식 (1)𝑖 ≤
9
이면, 반복에서 빠져나감. (2) 식𝑥 = 𝑛 ∗ 𝑖
<flow chart> 문장 참 거짓 𝑖 ≤ 9#include <stdio.h>
int main(void)
{
int n, x;
int i=0;
printf("출력하고 싶은 단을 입력:");
scanf_s("%d", &n);
while (i <=9)
{
x = n * i;
printf("%d*%d=%d\n", n,i,x);
i++;
}
return 0;
}
3 ∗ 0 = 0
3 ∗ 1 = 3
⋮
3 ∗ 8 = 24
3 ∗ 9 = 27
6-2.『while』문 if 문과 while 문의 비교 if 문: 조건이 만족되면 문장이 단 한번만 실행. while 문: 조건이 만족 될 때가지 문장을 계속 실행. while 루프 사용시 주의사항 (1) (예시) 아래 코드 수행의 결과는? 한번 반복은 if 문, 두 번 이상은 while 사용
int n;
Int i=1;
while (i <3)
printf("%d*%d=%d\n", n,i,x=n*1);
i++;
return 0;
프로그램은 무한 루프상태∵ 𝑖 = 1
로 고정 6-2.『while』문int n;
Int i=1;
while (i <3)
{
printf("%d*%d=%d\n", n,i,x=n*1);
i++;
}
return 0;
3 ∗ 1 = 3
3 ∗ 2 = 6
while 루프 사용시 주의사항 (2) 반복 조건식에서『
! =
』또는 『==
』을 사용하는 것은 상당히 위험하므로 주의해야 함. 실수로 무한 루프를 만들 수 있음. (예시) 아래 코드 수행의 결과는?Int i=0;
while (i <9)
{
printf("%d\n", i);
i+=2;
}
return 0;
프로그램은 무한 루프상태∵ 𝑖 = 9
가 되지 않음 6-2.『while』문0
2
4
6
8
Int i=0;
while (i !=9)
{
printf("%d\n", i);
i+=2;
}
return 0;
while 루프 사용시 주의사항 (3) 참과 거짓: while문의 조건식에서 0이 아닌 모든 값들은 모두 참이고, 0은 거짓! ※ note: 관계수식 또는 논리수식의 결과값은 참이면 1, 거짓이면 0 (예시1) while문의 조건식에서 예시2) 반복조건을 나타내는 수식에서『
==
』대신『=
』을 사용하면?while (i = 2)
{
⋮
}
𝑖
값이 2 이므로 항상 참 이되어 무한 루프상태 6-2.『while』문3:
참입니다.2:
참입니다.1:
참입니다.0:
거짓입니다. 0이면 거짓 0이 아닌 모든 수 참 #include <stdio.h> int main(void) { int i=3; while (i != 0) { printf("%d: 참입니다.\n", i); i--; } printf("%d: 거짓입니다", i); return 0; }(예제1) 입력된 성적의 평균을 구하는 프로그램을 작성하라 변수지정 (성적 및 입력 수) 변수(정수):
𝑔𝑟𝑎𝑑𝑒, 𝑖
변수지정 (합계 및 평균) 변수(실수):𝑠𝑢𝑚, 𝑎𝑣𝑒𝑟𝑎𝑔𝑒
흐름도 및 조건식 (1) 입력된 성적의 합계를 구하고 성적의 개수를 센다. 조건식:𝑤ℎ𝑖𝑙𝑒
(성적이0
이상 이면) • 성적입력 • 입력된 성적을𝑔𝑟𝑎𝑑𝑒
에 저장 •𝑠𝑢𝑚
에 입력된 점수를 누적 • 성적의 수𝑛
을 하나씩 증가 (2) 평균을 계산하고 화면에 출력 조건식 •𝑠𝑢𝑚
을𝑛
으로 나누어서𝑎𝑣𝑒𝑟𝑎𝑔𝑒
에 저장 •𝑎𝑣𝑒𝑟𝑎𝑔𝑒
를 화면에 출력 <flow chart> 성적 입력 참 거짓𝑔𝑟𝑎𝑑𝑒 ≥ 0
𝑠𝑢𝑚 += 𝑔𝑟𝑎𝑑𝑒
𝑛 + +
𝑎𝑣𝑒𝑟𝑎𝑔𝑒 = 𝑠𝑢𝑚/𝑛
𝑎𝑣𝑒𝑟𝑔𝑒
출력 6-2.『while』문(예제1 계속) 입력된 성적의 평균을 구하는 프로그램을 작성하라 변수지정 (성적 및 입력 수) 변수(정수):
𝑔𝑟𝑎𝑑𝑒, 𝑖
변수지정 (합계 및 평균) 변수(실수):𝑠𝑢𝑚, 𝑎𝑣𝑒𝑟𝑎𝑔𝑒
종료 시 음수입력 성적 입력:10
성적 입력:20
성적 입력:30
성적 입력:-1
성적의 평균= 20.000000
#include <stdio.h>
int main(void)
{
변수지정 및 초기화
printf("종료 시 음수 입력\n");
while (grade >= 0)
{
⋮
}
sum = sum - grade;
n--;
평균을 계산하고 화면에 출력한다.
return 0;
}
<flow chart> 성적 입력 참 거짓 𝑔𝑟𝑎𝑑𝑒 ≥ 0 𝑠𝑢𝑚 += 𝑔𝑟𝑎𝑑𝑒 𝑛 + + 𝑎𝑣𝑒𝑟𝑎𝑔𝑒 = 𝑠𝑢𝑚/𝑛 𝑎𝑣𝑒𝑟𝑔𝑒 출력 마지막 데이터 제거𝑔𝑟𝑎𝑑𝑒 ≥ 0
이면 반복 보초값 6-2.『while』문(예제1 검토) 입력된 성적의 평균을 구하는 프로그램을 작성하라 변수지정 (성적 및 입력 수) 변수(정수):
𝑔𝑟𝑎𝑑𝑒, 𝑖
변수지정 (합계 및 평균) 변수(실수):𝑠𝑢𝑚, 𝑎𝑣𝑒𝑟𝑎𝑔𝑒
종료 시 음수입력 성적 입력:10
성적 입력:20
성적 입력:30
성적 입력:-1
성적의 평균= 20.000000
𝑔𝑟𝑎𝑑𝑒 ≥ 0
이면 반복#include <stdio.h>
int main(void)
{
int grade, n;
float sum, average;
n = 0;
sum = 0;
grade = 0;
printf("종료 시 음수 입력\n");
while (grade >= 0)
{
printf("성적 입력");
scanf_s("%d", &grade);
sum += grade;
n++;
}
<flow chart> 성적 입력 참 거짓 𝑔𝑟𝑎𝑑𝑒 ≥ 0 𝑠𝑢𝑚 += 𝑔𝑟𝑎𝑑𝑒 𝑛 + + 𝑎𝑣𝑒𝑟𝑎𝑔𝑒 = 𝑠𝑢𝑚/𝑛 𝑎𝑣𝑒𝑟𝑔𝑒 출력 변수지정 및 초기화 6-2.『while』문(예제1 검토) 입력된 성적의 평균을 구하는 프로그램을 작성하라 변수지정 (성적 및 입력 수) 변수(정수):
𝑔𝑟𝑎𝑑𝑒, 𝑖
변수지정 (합계 및 평균) 변수(실수):𝑠𝑢𝑚, 𝑎𝑣𝑒𝑟𝑎𝑔𝑒
종료 시 음수입력 성적 입력:10
성적 입력:20
성적 입력:30
성적 입력:-1
평균 성적= 20.000000
마지막 데이터 제거#include <stdio.h>
int main(void)
{
⋮
변수지정 및 초기화
printf("종료 시 음수 입력\n");
while (grade >= 0)
{
⋮
}
sum = sum - grade;
n--;
average = sum / n;
printf("평균 성적 = %f\n", average);
return 0;
}
𝑔𝑟𝑎𝑑𝑒 ≥ 0
이면 반복 <flow chart> 성적 입력 참 거짓𝑔𝑟𝑎𝑑𝑒 ≥ 0
𝑠𝑢𝑚 += 𝑔𝑟𝑎𝑑𝑒
𝑛 + +
𝑎𝑣𝑒𝑟𝑎𝑔𝑒 = 𝑠𝑢𝑚/𝑛
𝑎𝑣𝑒𝑟𝑔𝑒
출력 6-2.『while』문6-3. 『do...while』문 『do...while』문은 『while』문과 비슷하나, 반복조건을 루프의 처음이 아니라 루프의 끝에서 검사. 조건식은 참, 거짓을 가릴 수 있은 수식이고, 문장은 단일문 또는 복합문 『do...while』문에서는 조건이 반복이 되지 않아도 루프 안의 문장이 한번은 실행됨. ※
𝑛𝑜𝑡𝑒:
『do...while』 문에서는 while 위에『;
』 6-3.『do...while』문do
{
문장
}
while (조건);
조건식에 관계없이 최소한 1번은 실행 조건식이 참이면 반복실행 <do...while 문> <while 문> 참 거짓 조건 문장 1 do 문장 2 문장 3 문장 참 거짓 조건(예제) 보초값 0 이 입력될 때까지 입력된 숫자를 더하는 프로그램을 작성하라 변수지정 (숫자의 합 및 입력되는 숫자) 변수(정수):
𝑠𝑢𝑚, 𝑛𝑢𝑚𝑏𝑒𝑟
흐름도 및 조건식 (1) 입력된 숫자의 합계를 구하고 숫자의 개수를 센다. • 입력된 숫자를𝑠𝑢𝑚
에 저장 •𝑠𝑢𝑚
에 입력된 숫자를 누적 (2) 조건식 •𝑛𝑢𝑚𝑏𝑒𝑟! = 0
가 참이면, 계속『do』를 수행. •𝑛𝑢𝑚𝑏𝑒𝑟! = 0
거짓이면𝑠𝑢𝑚
을 화면에 출력. <flow chart> 참 거짓 조건𝑠𝑢𝑚 += 𝑛𝑢𝑚𝑏𝑒𝑟
do𝑝𝑟𝑖𝑛𝑡(𝑠𝑢𝑚)
#include <stdio.h>
int main(void)
{
int number, sum = 0;
do
⋮
while
return 0;
}
종료 시 0 입력 정수 입력: 1 정수 입력:2
정수 입력:3
입력 정수의 합= 6.000000
6-3.『do...while』문(예제 검토) 보초값 0 이 입력될 때까지 입력된 숫자를 더하는 프로그램을 작성하라 변수지정 (숫자의 합 및 입력되는 숫자) 변수(정수):
𝑠𝑢𝑚, 𝑛𝑢𝑚𝑏𝑒𝑟
조건식 •𝑛𝑢𝑚𝑏𝑒𝑟! = 0
가 참이면, 계속『do』를 수행. •𝑛𝑢𝑚𝑏𝑒𝑟! = 0
거짓이면,𝑠𝑢𝑚
을 화면에 출력. <flow chart> 참 거짓 조건𝑠𝑢𝑚 += 𝑛𝑢𝑚𝑏𝑒𝑟
do𝑝𝑟𝑖𝑛𝑡(𝑠𝑢𝑚)
#include <stdio.h>
int main(void)
{
int number, sum = 0;
printf("종료 시 0 입력\n");
do
{
printf("정수 입력: ");
scanf_s("%d", &number);
sum += number;
}
while (number != 0);
printf("입력 정수의 합 = %d \n", sum);
return 0;
}
종료 시 0 입력 정수 입력: 1 정수 입력:2
정수 입력:3
입력 정수의 합= 6.000000
6-3.『do...while』문 마지막 데이터 제거과정 없이 바로 출력 보초값6-4. 『for』문
『for』문은 정해진 횟수만큼 반복할 때 사용하는 반복 구조.
『for』문은 초기식(initialization), 조건식(expression), 증감식(increment) 의 3부분으로 구성됨. 이들 3부분은 세미콜론『
;
』으로 분리되어 있음. 초기식: 반복 루프를 시작하기 전에 한번만 실행 됨 주로 변수 값을 초기화 하는 용도 조건식: 반복 조건을 검사하는 식 • 수식의 값이 거짓이면, 반복이 중단 이 수식은 반복을 하기 전에 계산되어 값이 거짓이면, 한번도 반복되지 않음. 증감식: 한번의 루프실행이 끝나면 증감식이 실행됨 변수 i값을 증가시키는 역할 6-4.『for』문 <flow chart> <형식> 문장 참 거짓 조건 초기식 증감식for ( i = 0; i < 5; i++)
printf(“Hello World\n");
조건식 조건식이 참이면 반복실행 증감식 초기식(예시1) 1부터 3까지의 정수를 더하여 합을 구하는 프로그램을 작성하라 변수지정 (숫자의 합 및 숫자의 수) 변수(정수):
𝑠𝑢𝑚, 𝑖
흐름도 및 조건식 • 초기식:𝑖 = 0
• 조건식:𝑖 ≤ 3
• 증감식:𝑖 + +
1부터3까지 정수의 합 = 6 6-4.『for』문 <flow chart>#include <stdio.h>
int main(void)
{
int number, sum;
sum = 0;
for (inumber= 1; number <= 3; number++)
sum +=number;
printf("1부터 3까지의 정수의 합= %d\n", sum);
return 0;
}
𝑠𝑢𝑚 += 𝑖
참 거짓𝑖 ≤ 0
𝑖 = 0
𝑖 + +
Do...while Vs. for (예시2) 1부터 3까지의 정수를 더하여 합을 구하는 프로그램 비교. 28 6-4.『for』문 Do...while for 변수