while문
- 중괄호를 사용하여 문장들을 그룹핑해야한다.
#include <stdio.h>
int main(void)
{
int i = 0;
while(i < 5) // 반복 조건 true일 때 반복함
{
printf("Hello World! \n"); // 반복 내용
i++ // 반복 내용
}
return 0;
}
#include <stdio.h>
int main(void)
{
int n;
int i = 1;
printf("출력하고 싶은 단: ");
scanf("%d", &n)
while(i <= 9)
{
printf("%d * %d = %d \n", n, i , n*i);
i++;
}
return 0;
}
// while문을 이용한 제곱값 출력 프로그램
#include <stdio.h>
int main(void)
{
int n;
printf("정수와 그 제곱값\n");
n = 1;
while (n <= 10) {
printf("%5d %5d\n", n, n*n);
n++;
}
return 0;
}
// 1부터 입력한 숫자까지의 합계 구하기
#include <stdio.h>
int main(void)
{
int i, n, sum; //변수 선언
printf("정수를 입력하시오:"); //입력 안내 메시지 출력
scanf("%d", &n); //정수값 입력
i = 1; //변수 초기화
sum = 0;
while (i <= n) {
sum += i;
i++;
}
printf("1부터 %d까지의 합계는 %d입니다.\n", n, sum);
return 0;
}
// 홀수 합계만 구하기
#include <stdio.h>
int main(void)
{
int i, n, sum; //변수 선언
printf("정수를 입력하시오:"); //입력 안내 메시지 출력
scanf("%d", &n); //정수값 입력
i = 1; //변수 초기화
sum = 0;
while (i <= n) {
sum += i;
i = i + 2;
}
printf("1부터 %d까지의 홀수합은 %d입니다.\n", n, sum);
return 0;
}
// 팩토리얼 계산하기
#include <stdio.h>
int main() {
int n;
long long fact = 1; // 팩토리얼을 저장할 변수
printf("정수를 입력하세요: ");
scanf("%d", &n);
int i = 1;
// while 반복문을 이용하여 팩토리얼 계산
while (i <= n) {
fact *= i; // fact = fact * i; 와 동일하다
i++;
}
// 결과 출력
printf("%d!은 %d입니다.\n", n, fact);
return 0;
}
센티널
- 입력되는 데이터의 끝을 알리는 특수한 값
- 사용자가 입력한 값이 특정 조건을 충족할 때까지 반복문이 실행되며, 센티널 값이 입력되면 반복문이 종료된다.
- ex) "종료하려면 음수를 입력하시오"
#include <stdio.h>
int main(void)
{
int number;
int sum = 0;
printf("정수를 입력하세요 (종료하려면 -1을 입력하세요):\n");
while (1) {
printf("정수 입력: ");
scanf("%d", &number);
if (number == -1) {
break; // -1이 입력되면 반복문을 종료합니다.
}
sum += number; // 입력된 값을 sum에 더합니다.
}
printf("입력된 정수의 합계는 %d입니다.\n", sum);
return 0;
}
EOP
- 유저가 Ctrl+Z (Windows) 또는 Ctrl+D (Unix/Linux/Mac) 를 누르면 EOF가 발생하여 프로그램이 종료된다.
#include <stdio.h>
int main(void)
{
int number, min_value = INT_MIN;
printf("정수를 입력하시오\n 종료는 Ctrl+Z\n");
while (scanf("%d", &number) != EOF) {
if(number < min_value)
min_value = number;
}
printf("최소값은 %d입니다.", min_value);
return 0;
}
유클리드 알고리즘과 while문을 이용해 최대 공약수 찾기
유클리드 알고리즘 : 최대 공약수를 찾는 가장 일반적인 방법 중 하나
- 두 수 중 큰 수를 작은 수로 나눈 나머지를 구한다
- 작은 수와 나머지로 다시 이 과정을 반복한다
- 나머지가 0이 되면, 그때의 작은 수가 최대 공약수이다.
#include <stdio.h>
int main(void)
{
int x, y, r;
printf("두 정수를 입력하세요 (큰수, 작은수): ");
scanf("%d %d", &x, &y);
// 유클리드 알고리즘을 이용한 최대 공약수 계산
while (y != 0) {
r = x % y; // 나머지를 계산합니다.
x = y; // a에 b를 대입합니다.
y = r; // b에 나머지를 대입합니다.
}
printf("최대 공약수는 %d입니다.\n", x);
return 0;
}
do...while문
- 한번 실행하고 나서, 더 실행할지 말지 조건을 체크해주고 만족하면 반복한다.
- 코드가 복잡해져서 많이 쓰지는 않는다.
#include <stdio.h>
int main(void)
{
int number, sum = 0;
do {
printf("정수를 입력하시오: ");
scanf("%d", &number);
sum += number; // 입력된 값을 sum에 더합니다.
} while (number != 0); // 입력된 값이 0이 아니면 계속 반복합니다.
printf("입력된 숫자들의 합계는 %d입니다.\n", sum);
return 0;
}
for문
#include <stdio.h>
int main(void) {
int i; // 반복 횟수를 제어할 변수
// for 반복문을 이용하여 5번 "Hello World" 출력
for (i = 0; i < 5; i++) {
printf("Hello World\n");
}
return 0;
}
#include <stdio.h>
int main(void) {
int i, sum;
sum = 0;
// 1부터 10까지의 정수를 더하는 반복문
for (int i = 1; i <= 10; i++) {
sum += i;
}
printf("1부터 10까지의 정수의 합: %d\n", sum);
return 0;
}
#include <stdio.h>
int main(void) {
int i,n;
printf("정수를 입력하세요: ");
scanf("%d", &n);
for (i = 1; i <= n; i++)
printf("%5d 5%d\n", i, i*i*i);
return 0;
}
// 반복을 이용한 팩토리얼 구하기
#include <stdio.h>
int main(void) {
int i, n;
long long fact = 1;
printf("정수를 입력하세요: ");
scanf("%d", &n);
// 입력된 정수의 팩토리얼 계산
for (i = 1; i <= n; i++) {
fact *= i; // fact = fact * i; 와 동일하다
}
// 결과 출력
printf("%d!은 %d입니다.\n", n, fact);
return 0;
}
for문 : 다양한 증감수식의 형태
for(int i = 10 ; i > 0 ; i--) //뺄셈 사용
printf("Hello World!\n");
for(int i = 10 ; i > 0 ; i--, j++) //여러 개 쓰는 것도 가능
printf("Hello World!\n");
for(int i = 0 ; i < 10 ; i += 2) //2씩 증가
printf("Hello World!\n");
for(int i = 1 ; i < 10 ; i *= 2) //2를 곱한다
printf("Hello World!\n");
for(int i = 0 ; i < 100 ; i = (i*i) + 2 ) //어떤 수식이라도 가능하다
printf("Hello World!\n");
for( ; ; ) //무한 반복 루트도 가능하다
printf("Hello World\n");
for( ; i < 100 ; i++) //한 부분이 없을수도 있다
printf("Hello World\n");
for( i = 0, k = 0 ; i < 100 ; i++) //2개 이상의 변수 초기화
printf("Hello World\n");
중첩 반복문(nested loop)
- 반복문 안에 다른 반복문이 위치한다.
#include <stdio.h>
int main(void) {
int x, y;
// 사각형 출력을 위한 중첩된 for문
for (y = 0 ; y < 5 ; y++) {
for (x = 0 ; x < 10 ; x++) {
printf("*");
}
printf("\n");
}
return 0;
}
goto문의 사용
#include <stdio.h>
int main(void) {
int x, y;
for (y = 1; y < 10000; y++) {
for (x = 1 ; x < 50 ; x++) {
if ( _kbhit() ) goto OUT;
printf("*")
}
printf("\n");
}
OUT:
return 0;
}
continue문
// 문자열의 각 문자를 확인하여 소문자인 경우 대문자로 변경
#include <stdio.h>
int main(void) {
char letter;
while (1) {
printf("문자열을 입력하세요: ");
scanf("%c", &letter);
if ( letter == 'Q' )
break;
if( letter < 'a' || letter > 'z')
continue;
letter -= 32;
printf("변환된 대문자는 %c입니다.\n", letter);
}
// 변경된 문자열 출력
printf("변경된 문자열: %c\n", letter);
return 0;
}
복리에서 원리금 합계
원리합계 = 원금 x (1+이율)^기간
- 빨간 선은 복리, 파란 선은 단리이다.
// 복리이자 계산
#include <stdio.h>
#define RATE 0.07
#define INVESTMENT 10000000 //초기 투자금
#define YEARS 10
int main(void)
{
int i;
double total = INVESTMENT; //원리금 합계
printf("==============\n");
printf("연도 원리금\n");
printf("==============\n");
for(i = 1 ; i <= YEARS; i++)
{
total = total * ( 1 + RATE ); //새로운 원리금 계산
printf("%d %10.1f\n", i, total);
}
return 0;
}
'C Language' 카테고리의 다른 글
C언어 사용자 정의 함수 (0) | 2024.06.19 |
---|---|
C언어 라이브러리의 rand() 함수 (0) | 2024.06.18 |
C언어 Basic 조건문 if, switch 개념 (0) | 2024.06.18 |
C언어 수식과 연산자의 의미 학습하기 (2) | 2024.06.13 |
C언어 변수에 대해 학습하기 (2) (2) | 2024.06.12 |