학습(Study) & 목표(Objective)
이번에는 반복문 중에서 for 문을 사용하여 문제를 해결해보려고 합니다. for 문은 반복적인 프로그래밍 구문을 실행할 수 있는 반복으로, 표현 식은 다음과 같습니다.
for ( <표현식1> ; <표현식2>; <표현식3>)
{
<동작>
}
- 표현식 1은 일반적으로, for 반복문이 종료되기 위한 플래그 조건을 제어하는 변수를 초기화하는 데 자주 사용됩니다.
- 표현식 2는 반복문의 종료 조건을 검사합니다. 표현식2의 조건이 거짓으로 판단되면, 반복문의 반복은 종료됩니다.
- 표현식 3은 플래그나 변수를 갱신하는 데 많이 사용됩니다.
for문의 예제코드
int i = 0;
for(i = 0; i < 10; i++)
{
...
}
과제(Task)
입력받은 두 정수[a, b] 사이의 값을 출력한다. 출력하려는 정수를 n이라고 했을 때, 다음 조건에 맞도록 출력하면 된다.
조건을 만족하면, 1은 "one", 2는 "two"와 같이, 소문자 영어로 출력한다.
조건을 만족하는 짝수이면, "even"을 출력한다.
조건을 만족하는 홀수이면, "odd"를 출력한다.
입력 형식(Input Format)
첫 번째 줄에 정수 a를 입력
두 번째 줄에 정수 b를 입력
제약 조건(Constraints)
출력 형식(Output Format)
위에 설명한 조건에 맞는 [a, b]에 대한 적절한 영어 표현식을 출력한다.
입력 예제(Sample Input)
8
11
출력 예제(Sample Output)
eight
nine
even
odd
주어진 코드
#include <stdio.h> #include <stdlib.h> int main() { int a, b; scanf("%d\n%d", &a, &b); // Complete the code. return 0; } |
해결된 코드
문자 포인터 배열로 0부터 10까지의 출력문자를 저장해서 for 문으로 출력하는 방법을 사용하시는 게 일반적인 것 같습니다.
#include <stdio.h> #include <stdlib.h> int main(void) { // C 언어의 특성대로, 최대한 호환성을 위해 indxe 변수를 별도로 선언 int i = 0; // 사용할 변수들을 선언 및 초기화 int a = 0, b = 0; // 사용할 문구를 미리 문자 포인터의 배열에 문자열을 저장한다. char* represent[10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; // 조건에 맞는 2개의 정수를 입력받는다. scanf("%d\n%d", &a, &b); //== 반복문 수행 ==// // 초기값 a부터 b까지 순차적으로 정수 값을 증가(i++) // 시키면서 조건이 만족할 때까지 (i <= b) // 수행한다. for(i = a; i <= b; i++) { //== i가 9보다 크면, 지정된 문구 출력 ==// if(i > 9) { if(i % 2 == 0) printf("even\n"); else printf("odd\n"); } //== i가 9보다 작으면, 영어 소문자 출력 ==// else { // index와 저장된 문구가 동일하므로, // 아래처럼 배열 index를 그대로 사용해도 된다. // (단, 9보다클 때, 여기로 오면 프로그램에 문제가 발생한다) printf("%s\n", represent[i]); } } return 0; } |
물론 아래와 같이 직관적인 코드를 사용하여 코딩 할 수도 있죠. 목적은 for 문을 사용하는 거니까요.
위와 같은 방법은 일반 문자 포인터 배열을 선언했는데, index 크기가 10으로 고정되어 있어, 특정한 경우에 위험할 수도 있습니다. 그렇게 따지고 봤을 때는, 아래와 같이 정답을 위한 일회성 코드도 안 좋다고 말할 수는 없는 거죠.
#include <stdio.h> #include <stdlib.h> int main(void) { int a = 0, b = 0; scanf("%d\n%d", &a, &b); int i = 0; for(i = a; i <= b; i++) { switch(i) { case 1: printf("one"); break; case 2: printf("two"); break; case 3: printf("three"); break; case 4: printf("four"); break; case 5: printf("five"); break; case 6: printf("six"); break; case 7: printf("seven"); break; case 8: printf("eight"); break; case 9: printf("nine"); break; default: if(i % 2 == 0) { printf("even"); } else { printf("odd"); } break; } // end switch printf("\n"); } // end for return 0; } |
for() 문을 사용하는 예제를 알아봤습니다.
자세한 설명이 필요하신 분은 댓글로 알려주세요~
'C Programming > 연습 문제' 카테고리의 다른 글
[C언어 연습문제]강좌 9. Printing Pattern using Loops(숫자가 둘러진 대칭 사각형 패턴 인쇄하기) (0) | 2019.03.19 |
---|---|
[C언어 연습문제]강좌 8. Bitwise Operators(과제를 통한 비트 연산자의 활용) (0) | 2019.03.18 |
[C언어 연습문제]강좌 6. Playing With Characters(문자 입력), scanf()로 공백 입력받기 (0) | 2019.02.19 |
[C언어 연습문제]강좌 5. Conditional Statements in C(C언어 if 조건문), 숫자 조건을 영어로 표현하기) (0) | 2019.02.18 |
[C언어 연습문제]강좌 4. Pointers in C(포인터로 2개의 변수를 반환하는 함수 구현) (0) | 2019.02.16 |