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

C언어 연습문제 풀이 CH4 (12 ~ 19)

라이피 (Lypi) 2018. 5. 8. 23:15
반응형

문제 출처 : YES C (정보공학연구소/생능출판사)



12. scanf_s()를 통해 숫자 2개를 입력받아 사칙연산의 결과를 출력하는 프로그램을 작성하라.

#include <stdio.h>

int main() {
	int num1, num2;

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

	printf("%d + %d = %d \n", num1, num2, num1 + num2);
	printf("%d - %d = %d \n", num1, num2, num1 - num2);
	printf("%d * %d = %d \n", num1, num2, num1 * num2);
	
	if (num2 != 0) {
		printf("%d / %d = %f \n", num1, num2, (float)num1 / (float)num2);
	} else { 
		printf("0으로는 나눌 수 없습니다. \n"); 
	}

	return 0;
}


13. 한 컵(cup)에 8온스(ounce)의 물이 들어간다고 할때 컵의 물을 온스의 단위로 바꾸는 프로그램을 작성하라.

#include <stdio.h>

int main() {
	float input;

	while (1) {
		printf("몇 컵인지 입력하세요. (0이하의 수를 입력하면 종료됩니다) : "); scanf_s("%f", &input);
		if (input <= 0) { return 0; }
		printf("%.2f컵의 물은 %.2f온스입니다. \n", input, input * 8);
	}
}


14. 다음 프로그램을 if문과 goto문 대신에 적합한 반복문을 사용하여 작성하라.


예제 코드

#include <stdio.h>

int main() {
	int i = 1;
	
	jump1: i++;

	if (i < 10) goto jump1;
	else  printf("i = %d \n", i);
}

바꾼 코드

#include <stdio.h>

int main() {
	int i = 1;

	while (i<10) {
		i++;
	}

	printf("i = %d \n", i);
}


15. 다음 두 프로그램의 차이점을 설명하라.

#include <stdio.h>

int main() {
	int i, j, x = 0;

	printf("i값을 입력하세요 : "); scanf_s("%d", &i);
	printf("j값을 입력하세요 : "); scanf_s("%d", &j);

	if (i > 10) {
		if (j > i)
			x = j;
	}
	else
		x = i;

	printf("i = %d, j = %d, x = %d", i, j, x);
} // i>10이고 i>j 이면 x에 아무값도 안 들어감.


#include <stdio.h>

int main() {
	int i, j, x = 0;

	printf("i값을 입력하세요 : "); scanf_s("%d", &i);
	printf("j값을 입력하세요 : "); scanf_s("%d", &j);

	if (i > 10) 
		if (j > i)
			x = j;
	else
		x = i;

	printf("i = %d, j = %d, x = %d", i, j, x);
} //i>10이고 i>j일 때만 x에 값이 들어간다.

// ... 이런식으로 코딩하지 맙시다.


16. break문과 continue문의 의미를 예를 들어 설명하라. (생략)


17. 성적을 학점으로 변환하는 프로그램을 if문을 이용하여 작성하라. 

#include <stdio.h>

int main() {

	int input;

	printf("성적을 입력하세요 : "); scanf_s("%d", &input);

	if (input >= 90) {
		printf("%d점은 A학점입니다.", input);
	} else  
	if (input >= 80) {
		printf("%d점은 B학점입니다.", input);
	} else
	if (input >= 70) {
		printf("%d점은 C학점입니다.", input);
	} else
	if (input >= 60) {
		printf("%d점은 D학점입니다.", input);
	} else {
		printf("%d점은 F학점입니다.", input);
	}

}


18. 성적을 학점으로 변환하는 프로그램을 switch-case문과 break문을 이용하여 작성하라.

#include <stdio.h>

int main() {

	int input;

	printf("성적을 입력하세요 : "); scanf_s("%d", &input);

	switch (input/10) {
	
	case 10 :
	case 9:
		printf("%d점은 A학점입니다.", input); break;
	case 8:
		printf("%d점은 B학점입니다.", input); break;
	case 7:
		printf("%d점은 C학점입니다.", input); break;
	case 6:
		printf("%d점은 D학점입니다.", input); break;
	default :
		printf("%d점은 F학점입니다.", input); break;
	}

}

//범위를 설정해야하는 것은 switch문을 사용해서 만들기가 은근히 불편하다.


19. 중첩된 if문을 이용하여 하나의 수를 입력받아 그 수가 100보다 큰지 같은지, 작은지를 구별하는 프로그램을 작성하라.

int main() {

	int input;

	printf("확인할 수를 입력하세요. :"); scanf_s("%d", &input);

	if (input >= 100) {
		if (input == 100) {
			printf("입력하신 수가 100입니다. \n");
			return 0;
		}
		printf("%d는 100보다 큰 수입니다. \n", input);
	}
	else {
		printf("%d는 100보다 작은 수 입니다. \n", input);
	}

}

//왜 이 문제에서 중첩 if를 써야 하는것인가. 얼마나 불편한지 경험해보라는건가?



마지막 문제 빡침.


내일로 미룸.

반응형