[C Question]C 문제풀이 조건문

Date:     Updated:

카테고리:

태그:

1. 1이상 100미만 정수 중에서 7의 배수와 9의 배수 출력

조건
7의 배수이면서 동시에 9의 배수인 정수는 한 번만 출력

피드백: 중괄호 남발하지말고 한 줄이면 한 줄 답게 !!
정답

int num; for (num = 1; num < 100; num++) if (num % 7 == 0 || num % 9 == 0) printf(“%d “, num);

2. 두 개의 정수를 입력 받아서 두 수의 차를 출력하는 프로그램 작성.

조건
1. 무조건 큰 수에서 작은 수를 뺀 결과를 출력
순서와 상관없이 12와 5를 입력했다면 7이 출력되어야함, 4와 16이어도 12가 출력
즉, 출력 결과는 무조건 0 이상이어야 함

2. 결과를 위한 printf를 한 번만 써야됨

2-1. if, else로 풀기

정답
int v1, v2, result;
scanf_s("%d %d", &v1, &v2);

if (v1 < v2) result = v2 - v1;
else result = v1 - v2;
printf("%d", result);

// 첫번째 내 정답..;
if (v1 && v2) printf("%d - %d = %d \n", v1, v2, (~(v1 - v2) + 1));

2-1. 조건 연산자로 풀기 ( 삼항 연산자 )

정답
printf("%d", (v1 > v2) ? v1 - v2 : v2 - v1);

3. 학생의 전체 평균점수에 대한 학점을 출력

조건
성점이 90점 이상이면 A, 80점 이상이면 B, 70점 이상 C, 50점이상 D, 50점미만 F
실행시 국어, 영어, 수학 점수 입력받기
평균 구하고 적절한 학점 출력
float 금지
if에서 printf 금지
정답
int kor, eng, math, score = 0;
double avg;
char grade;
printf("input kor, eng, math scroe = "); // 점수를 python에서는 mark라고 부르기도 한대
scanf_s("%d %d %d", &kor, &eng, &math); 
avg = ( kor + eng + math ) / 3.0;

if (avg >= 90)		grade = 'A';
else if (avg >= 80) grade = 'B';
else if (avg >= 70) grade = 'C';
else if (avg >= 50) grade = 'D';
else				grade = 'F';

printf("평균: %.1f \n 학점: %c!", avg, grade);

4. 버스 기본 요금 1000원인 상태에서 나이에 따라 할인율 적용하기

조건
0~3세			영유아			할인율 100% (무료)
4~13세			어린이			할인율 50%
14~19세			청소년			할인율 25%
20세이상		성  인			할인율 0%
65세이상		어르신			할인율 100% (무료)

곱셈으로 처리할 것 ( 뺄셈은 더럽다 ! )
printf 여러번 쓰면 지옥행
출력할 때 최종 요금은 %d로 할 것

printf에서 연산하기, if에서 연산 ㄴㄴ
printf에서 형식문자를 %d로 뽑아봐-> 형변환 하라는 뜻
정답
int basic = 1000, age = 0;
double rate = 1;

printf("input age: ");
scanf_s("%d", &age);

if (age <= 3 || age >= 65)      rate = 0;
else if (age >= 20)				rate = 1;
else if (age >= 14)				rate = 0.75;
else if (age >= 4)				rate = 0.5;

printf("최종요금 %d원", (int)(basic * rate));

5. 정수 2개 입력받아서 max, min에 저장하는데 큰 수는 max에 작은 수는 min 저장할 수 있도록 !

조건 swap skill 쓸 것 !
혹여나 프로그램 오류가 난다면 scanf_s에 주소를 참조하게 했는지 확인 ! 
정답
int max = 0, min = 0, temp = 0;
printf("input max, min: ");
scanf_s("%d %d", &max, &min);

if (max < min)
{
	temp = max;
	max = min;
	min = temp;
}
printf("max: %d  min: %d", max, min);

6. 구구단, 2단, 4단, 6단, 8단만 출력하되, 2단은 2x2까지, 4단은 4x4까지 이런식으로.

조건
continue, break를 써야한다.
6번 정답
int i, j;

for (i = 2; i < 10; i++)
{
	if (i % 2 != 0) continue;
	for (j = 1; j < 10; j++)
	{
		if (j > i) break;
		printf("%d x %d = %d \n", i, j, i * j);
		
	}
	printf("\n");
}
조건
continue와 break 금지 !
6-1번 정답
int i, j;

for (i = 2; i < 10; i++)
{
	for (j = 1; j < 10; j++)
		if (j < i+1 && i % 2 == 0) printf("%d x %d = %d\n", i, j, i * j);
	printf("\n");
}

// ( if 제외 버전 )
for (i = 2; i < 10; i+=2)
{
	for (j = 1; j < i+1; j++)
		printf("%d x %d = %d\n", i, j, i * j);
	printf("\n");
}

c-question-lv1 카테고리 내 다른 글 보러가기

댓글 남기기