본문 바로가기

Study_C, C++/홍정모의 따라하며 배우는 C언어

[홍정모의 따라하며 배우는 C언어] 6.1 while 반복 루프에서 scanf()의 반환값 사용하기 ~ 6.4 관계 연산자 (Relational Operators)

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

 

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com