728x90
6.1 while 반복 루프에서 scanf()의 반환값 사용하기
- 정수를 반복해서 입력받고 문자 'q'를 입력시 입력받은 정수들의 총 합을 출력하는 프로그램
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num, sum = 0;
int status;
printf("Enter an integer (q to quit) : ");
status = scanf("%d", &num); // scanf()의 반환값은 입력받은 변수의 갯수
// num에 정수가 아닌 문자 입력시 status = 0
while (status == 1) { // 관계 연산자. ==는 equality operator
sum += num;
printf("Enter next integer (q to quit) : ");
status = scanf("%d", &num);
}
printf("Sum = %d", sum);
return 0;
}
Output :
Enter an integer (q to quit) : (10 입력)
Enter next integer (q to quit) : (20 입력)
Enter next integer (q to quit) : (30 입력)
Enter next integer (q to quit) : (q 입력)
Sum = 60
- scanf문을 while문의 조건식 안에 넣음으로써 중복되는 scanf( ) 를 없앨 수 있다
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num, sum = 0;
printf("Enter an integer (q to quit) : ");
while (scanf("%d", &num) == 1) {
sum += num;
printf("Enter next integer (q to quit) : ");
}
printf("Sum = %d", sum);
return 0;
}
6.2 의사코드 Pseudo Code
- Pseudo Code (의사 코드): 컴퓨터 언어가 아닌 인간의 언어를 사용해서 코드와 비슷한 내용을 조금 더 이해하기 쉽도록 만드는 코드, 의사소통을 위한 도구
- 특정 언어의 문법을 생각하지 않고 논리 자체에 집중
위의 프로그램을 의사코드로 표현
Initialize sum to 0 (sum을 0으로 초기화한다)
Prompt user (사용자에게 안내한다)
Read input (사용자에게 입력을 받는다)
While the input is an integer (그 입력이 정수인 동안에는)
Add the input to sum, (그 입력을 sum에 더한다)
Prompt user, (사용자에게 안내한다)
Then read next input (사용자에게 다음번 입력을 받는다)
After input complete, print sum (sum을 출력한다)
6.3 진입조건(Entry - Condition) 루프 while
- while문은 진입조건을 미리 검사한 후 조건 만족시 블록을 실행시킴
#include <stdio.h>
int main()
{
int i;
i = 1;
while (i < 5) // 조건문이 0(거짓)이면 실행하지 않고 0이 아니면 실행
printf("Hi!\n"); // iteration, infinite loop
i = 10;
while (i++ < 5) // cannot enter
printf("Hi\n");
i = 0;
while (i++ < 3); // null statement. while문이 ; 에서 끝남
printf("%i\n", i);
while (scanf("%d", &i) == 1) // 숫자가 아닌 값을 입력받을 때까지 계속 입력을 받음
;
return 0;
}
#include <stdio.h>
int main()
{
int i;
i = 1;
while (i < 5) { // while문이 두 줄 이상일 시 중괄호로 문장들을 묶음
printf("i before = %d\n", i);
i++;
printf("i after = %d\n", i);
}
return 0;
}
Output :
i before = 1
i after = 2
i before = 2
i after = 3
i before = 3
i after = 4
i before = 4
i after = 5
6.4 관계 연산자 (Relational Operators)
- 관계 연산자들의 예시
< is less than
<= is less than or equal to
== is equal to
>= is greater than or equal to
> is greater than
!= is not equal to
#include <stdio.h>
int main()
{
char c = 'A';
while (c != 'Z')
printf("%c ", c++);
return 0;
}
Output :
A B C D E F G H I J K L M N O P Q R S T U V W X Y
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h> // fabs() -> 괄호 안 값의 절댓값을 return 해줌
int main()
{
const double PI = 3.1415926535897932384626433832795;
double guess = 0.0;
printf("Input pi : ");
scanf("%lf", &guess);
// while (guess != PI)
while (fabs(guess - PI) > 0.01) { // 입력값과 PI값의 차의 절댓값이 0.01 이하
printf("Try again\n");
scanf("%lf", &guess);
}
printf("Good!");
return 0;
}
Output :
Input pi : (3 입력)
Try again
(3.1 입력)
Try again
(3.14 입력)
Good!
강의 출처 : https://www.inflearn.com/course/following-c/dashboard
'Study_C, C++ > 홍정모의 따라하며 배우는 C언어' 카테고리의 다른 글
[홍정모의 따라하며 배우는 C언어] 6.10 다양한 대입 연산자들 (그리고 어셈블리 코드 확인법) ~ 6.12 제논의 역설 시뮬레이션 예제 (0) | 2021.09.07 |
---|---|
[홍정모의 따라하며 배우는 C언어] 6.5 사실과 거짓 ~ 6.9 for는 유연해요 (0) | 2021.09.05 |
[홍정모의 따라하며 배우는 C언어] 5.9 표현식과 문장 ~ 5.12 함수의 인수와 매개변수 (0) | 2021.09.01 |
[홍정모의 따라하며 배우는 C언어] 5.6 연산자 우선순위와 표현식 트리 ~ 5.8 증가, 감소 연산자 (0) | 2021.08.25 |
[홍정모의 따라하며 배우는 C언어] 5.3 더하기, 빼기, 부호 연산자들 ~ 5.5 나누기 연산자 (0) | 2021.08.23 |