어서와 C언어는 처음이지 제15장
for 반복 루프 for 반복문을 사용하면 반복을 몇 번 할지를 지정할 수 있다(즉, 반복의 횟수를 정할 수 있다) { 하나 이상의 문장들; }
for 반복문의 예 for (ctr = 1; ctr <= 5; ctr++) { printf("카운터는 %d입니다.\n", ctr); }
while 문과 for 문 for (ctr = 1; ctr <= 5; ctr++) { printf("카운터는 %d입니다.\n", ctr); } ctr = 1; while (ctr <= 5) { printf("카운터는 %d입니다.\n", ctr); ctr++; }
for로 작업하기 45명의 직원들에 대하여 급여를 계산하고 수표로 출력한다. printf("이 회사에는 직원이 얼마나 있습니까? "); scanf(" %d", &employees); // 각 직원에 대하여 급여를 계산한다. for (i = 1; i <= employees; i++;) { // 직원의 급여를 계산하는 부분 }
여러 가지 for 문 for (cDown = 10; cDown >0; cDown--) { printf("%d.\n", cDown); } printf("발사! \n"); for (i = 1; i < 18; i += 3) { printf("%d ", i); // 1, 4, 7, 10, 13, 16 출력 }
여러 가지 for 문 for (outer = 1; outer <= 3; outer++) { for (inner = 1; inner <= 5; inner++) printf("%d ", inner) } // 각 내부 반복문이 종료될 때마다 줄바꿈 문자를 출력한다. printf("\n"); 1 2 3 4 5
// 완전 초보자 가이드 3판 15장 예제 #1 // 파일 Chapter15ex1.c /* 이 프로그램은 금년에 보았던 영화의 개수를 질문한다. 그리고 각 영화의 이름, 1부터 10까지의 평점을 묻는 반복문을 실행한다. 가장 선호 영화와 가장 선호하지 않는 영화를 출력한다. */ #include <stdio.h> #include <string.h> main() { int ctr, numMovies, rating, favRating, leastRating; char movieName[40], favorite[40], least[40]; // favRating을 0으로 설정한다. // 따라서 어떤 영화이든지 1이상의 평점이면 이것을 대체할 것이다. // leastRating은 10으로 초기화된다. 따라서 9이하의 평점을 가진 영화는 // 이것을 대체할 것이다. favRating = 0; leastRating = 10;
// 사용자가 영화를 얼마나 보았는지를 알아낸다. // 반복 반복문은 0이상의 값을 입력하면 계속된다. do { printf("금년에 영화를 몇 편이나 보았습니까? "); scanf(" %d", &numMovies); // 만약 사용자가 0이나 음수를 입력하면 // 프로그램은 양수를 입력하라고 경고하고 다시 질문한다. if (numMovies < 1) { printf("영화수가 0입니다. 다시 입력하시오!"); } } while (numMovies < 1);
for (ctr = 1; ctr <= numMovies; ctr++) { //영화 이름과 평점을 얻는다. printf("영화의 이름은? "); printf("(한단어 제목만!) "); scanf(" %s", movieName); printf("1부터 10까지의 평점을 준다면? "); scanf(" %d", &rating); // 최고 영화인지를 검사한다. if (rating > favRating) strcpy(favorite, movieName); favRating = rating; } // 최악의 영화인지를 검사한다. if (rating < leastRating) strcpy(least, movieName); leastRating = rating;
} printf("\n당신의 최고의 영화는 %s.\n", favorite); printf("\n당신의 최악의 영화는 %s.\n", least); return 0;
금년에 영화를 몇 편이나 보았습니까? 5 영화의 이름은? (한단어 제목만!) 인턴스텔라 1부터 10까지의 평점을 준다면? 7 영화의 이름은? (한단어 제목만!) 미드나잇 1부터 10까지의 평점을 준다면? 3 영화의 이름은? (한단어 제목만!) 헝거겜 1부터 10까지의 평점을 준다면? 5 영화의 이름은? (한단어 제목만!) 가을왕국 1부터 10까지의 평점을 준다면? 8 영화의 이름은? (한단어 제목만!) 안녕헤즐 당신의 최고의 영화는 가을왕국. 당신의 최악의 영화는 미드나잇.
Lab: 배수 구하기 1부터 1000까지의 숫자 중에서 3의 배수이거나 8의 배수인 숫자의 합을 구하는 프로그램을 작성하시오. sum = 209169
#include <stdio.h> main() { int i, sum = 0; for (i = 0; i <= 1000; i++) if (i % 3 == 0 || i % 8 == 0) sum += i; } printf("sum=%d ", sum); return 0;
Lab: 거듭제곱 실수의 거듭 제곱값을 계산하는 프로그램을 작성하여 보자. 사용자로부터 하나의 실수 r와 거듭 제곱 횟수를 나타내는 정수 n을 입력받아서 을 구하여 화면에 출력한다. 실수의 값을 입력하시오:2 거듭제곱횟수를 입력하시오:10 결과값은 1024.000000
#include <stdio.h> main() { int n, i; double r, result; printf("실수의 값을 입력하시오: "); scanf("%lf", &r); printf("거듭제곱횟수를 입력하시오: "); scanf("%d", &n); result = 1.0; for (i = 0; i<n; i++) result *= r; printf("결과값은 %f", result); return 0; }
학습 정리 반복문을 통하여 변수를 증가시키거나 감소시킬 때 for 반복문을 사용한다. 반복문의 초입에서 조건식은 검사된다. 반복문을 여러 번 반복해야 한다면 중첩 반복문을 사용한다. for 반복문의 안에서 세미콜론을 잊으면 안 된다. for 반복문은 이것이 필요하다. 반복문 제어 변수를 감소시키는 경우, 초기값이 검사값보다 적으면 안 된다.
Lab 한 개의 양의 정수를 입력 받아서, 그 수가 소수(Prime Number)인지 아닌지 판단하는 프로그램을 for 문을 사용하여 작성하시오. 예를 들어, 13을 입력하면 “소수이다”라고 출력하고, 24를 입력하면 “소수가 아니다”라고 출력한다. 2부터 100까지 모든 소수를 출력하는 프로그램을 작성하시오.
Q & A