연재 완료/C Lang 예제코드 모음

C언어 제어문 주요예제 1

라이피 (Lypi) 2018. 5. 3. 13:57
반응형

정수의 홀수 및 짝수 식별

#include <stdio.h>

void main()
{
	int a;
	
	printf("짝홀을 확인할 정수를 입력하세요 : "); scanf_s("%d", &a);

	if (a % 2 == 0) {
		printf("%d는 짝수입니다. \n", a);
	}
	else {
		printf("%d는 홀수입니다. \n", a);
	}
	
	//사실 이정도는 삼항연산자가 더 보기 편하다.
	printf("%d는 %s입니다. \n", a, (a == 0 ? "짝수" : "홀수"));
}


원하는 연산자와 두 수를 입력받아 사칙연산을 하고 그 결과를 보여주는 프로그램.

(단, 연산자를 잘못 입력했을 때는 다시 연산자를 입력하도록 하고, 나눗셈을 할 때 제수가 0일 경우 제수만 다시 입력받 

#include <stdio.h>
#include <conio.h>

int main()
{
	int a, b, result;
	char op;
	char conti = 'y';

	while (conti == 'y' || conti == 'Y')
	{//※프로그램 전체 반복문 시작

		do { //※연산자 입력 반복구문 (예외처리 때문에 반복구문을 사용했다.)
			printf("원하는 연산을 입력하세요. ex) + - * / : "); scanf_s("%c", &op, sizeof(char));
			// scanf_s()함수는 보안기능으로 문자열이 입력될 때 문자열의 크기를 함께 입력받는 기능이 추가되어 있다. 
			// 그래서 이 크기를 입력해주지 않으면 경고가 표시된다.
			
			if (op != '+' && op != '-' && op != '*' && op != '/')
			{//연산자 입력 예외처리 구문
				printf("잘못 입력하셨습니다. \n");

				while (getchar() != '\n'){	}
				//버퍼를 비우는 명령인데 어떤 원리로 작동하는건지 이해가 잘 안되서 빡친다.
				//어쨌든 getchar()함수로 버퍼에 있는 값을 \n이 나올 때까지 버리는 것이라한다.
			}
		} while (op != '+' && op != '-' && op != '*' && op != '/'); 
		//정해진 네가지 연산자가 아닐 경우 루프를 돌린다.

		printf("첫번째 정수를 입력하세요."); scanf_s("%d", &a);
		printf("두번째 정수를 입력하세요."); scanf_s("%d", &b);

		//※0으로 나누기에 대한 예외처리
		while (op == '/' && b == 0) { 
			printf("0으로는 나눌 수 없습니다. \n");
			printf("두번째 정수를 다시 입력해주세요: "); scanf_s("%d", &b);
		} 

		//※ 결과 계산
		switch (op) {//연산자의 문자 기호는 아스키코드 값으로 지정되므로 스위치문의 레이블로 사용할 수 있다.
			case '+': result = a + b; break;
			case '-': result = a - b; break;
			case '*': result = a * b; break;
			case '/': result = a / b; break;
		}

		//※결과 출력부
		if (op == '/') 
		{ //나누기만 몫과 나머지로 표현
			printf("%d %c %d = %d ... %d 입니다.", a, op, b, result, a%b);
		}
		else {
			printf("%d %c %d = %d입니다.", a, op, b, result);
		}

		while (getchar() != '\n'){}

		//※프로그램을 종료할 것인지에 대한 검사.  (예외처리 때문에 반복문을 사용하는 것)
		do { 
			printf("연산을 계속 하시겠습니까? (y,n)"); scanf_s("%c", &conti, sizeof(char));
			
			while (getchar() != '\n')	{}
			
			if (conti != 'y' && conti != 'n' && conti != 'Y' && conti != 'N') // 잘못된 입력에 대한 예외처리 
			{
				printf("잘못 입력하셨습니다.");
			}

			if (conti == 'n' || conti == 'N') // 프로그램을 빠져나가는 명령문
			{
				return 0;
			}

		} while (conti != 'y' && 'n' && 'Y' && 'N');

	}//프로그램 전체 반복문 끝
		
}

정수 a, b를 입력받아 a에서 b까지 합을 구하는 프로그램을 작성하라.
#include <stdio.h>

/*
정수입력에 문자 입력하면 예외처리 하는건 나중에 연구해보기로 했다.
*/


int main()
{
	int a, b, temp, sum = 0;

	//※정수 2개를 입력받는다.
	printf("두개의 정수를 입력받아 그 사이의 정수들의 합을 구하는 프로그램입니다. \n");
	printf("첫번째 정수를 입력하세요.: "); scanf_s("%d", &a);
	printf("두번째 정수를 입력하세요.: "); scanf_s("%d", &b);

	//※둘 중 작은 수를 a, 큰 수를 b에 넣는다.
	a > b ? temp = b, b = a, a = temp : temp = a;

	//※작은수부터 큰수까지 합을 구한다.
	for (; a <= b; a++)
	{
		sum += a;
	}

	//※값을 출력한다.
	printf("%d부터 %d까지의 합은 %d입니다. \n", temp, b, sum);

}


반응형