목적
  - 반복문을 수행할 줄 안다.

문제
사용자 삽입 이미지

코드

#include <iostream>

using namespace std;

int main(void)
{
 long lA, lB, lSwap, lTotal, lCount;
 lA = lB = lSwap = lTotal = lCount = 0;

 cout << "두 정수를 입력하세요 : ";
 cin >> lA >> lB;

 if (lA > lB)
 {
  lSwap = lA;
  lA = lB;
  lB = lSwap;

 }

 while(lA <= lB)
 {
  if(lA % 2 == 1)
  {
   lTotal += lA;
   lCount++;
   
  }

  lA++;

 }

 cout << "총합 : " << lTotal << endl;
 cout << "평균 : " << lTotal / lCount << endl;

 return 0;
}

해설
  - 2를 나눠서 1이 남으면 홀수 입니다.

참고
  - 유사 문제

Posted by 카켈




목적
  - 특정 구간간의 덧셈을 구한다.

문제

사용자 삽입 이미지
코드

#include <iostream>

using namespace std;

int main(void)
{
 int iA, iB, iTemp, iTotal;
 iA = iB = iTemp = iTotal = 0;

 cout << "정수 두개를 입력하세요 : ";
 cin >> iA >> iB;

 if(iA > iB)
 {
  iTemp = iA;
  iA = iB;
  iB = iTemp;

 }

 cout << iA << " 부터 " << iB << "까지의 합 : ";

 for(iTemp = iA; iTemp <= iB; iTemp++)
  iTotal += iTemp;

 cout << iTotal << endl;

 return 0;
}


해설
  - iSwap 문으로 큰수 작은수를 iA , iB로 나눈후 간단하게 for 문으로 덧셈을 구했습니다.

참고
  - 유사문제

Posted by 카켈




목적
  - while 반복문을 익힌다.

문제

사용자 삽입 이미지


코드 풀이

#include <iostream>

using namespace std;

int main()
{
 int i, iOut;
 long lTotal = 0;
 i = iOut = 0;

 cout << "정수 값을 입력하세요 : ";
 cin >> i;
 iOut = i;
 
 while(i > 0)
 {
  lTotal = i % 2 == 1 ? lTotal + i : lTotal;
  i--;

 }

 cout << "1 부터 " << iOut << "까지의 홀수 합은 " << lTotal << "입니다." << endl;

 return 0;
}

해설
  - C++ 는 C 보다 더 간소하면서도 더 강력한 기능을 제공합니다. 하위호환성(backward compatibility)도 최대한 지원합니다.
Posted by 카켈




1. 목적
  - 원하는 횟수 만큼 특정 범위의 난수를 난수를 만들줄 안다.

2. 문제 (점수 : 20 점)
  - 1부터 4까지의 정수를 가지는 난수를 100개 생성하여 그 확률을 출력하라
  - switch-case 문을 사용 하여라 (if-else 문 사용하지 말것)
  - 출력 화면

1이 나올 확률 : 0.230
2가 나올 확률 : 0.230
3이 나올 확률 : 0.180
4가 나올 확률 : 0.360
Press any key to continue

3. 이해
  - 난수 생성 원리를 아는가?
  - 필요한 확률을 출력할수 있는가?

4. 코드

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
 float one, two, three, four;
 int gen, i;
 one = two = three = four = 0.0;
 gen = i = 0;

 srand((unsigned)time(NULL));

 while(i<100)
 {
  gen = rand() % 4 + 1;
  switch(gen)
  { 
   case 1:
    one++;break;

   case 2:
    two++;break;

   case 3:
    three++;break;

   case 4:
    four++;break;

   default:
    break;

  }

  i++;
 }
 
 printf("1이 나올 확률 : %0.3f\n2가 나올 확률 : %0.3f\n3이 나올 확률 : %0.3f\n4가 나올 확률 : %0.3f\n", one/100, two/100, three/100, four/100);

 return 0;
}

5. 해설
  - switch-case 문을 써서 특정 확률을 계산 할수 있습니다.
  - float 형 자료를 써서 소숫점 출력을 할수 있습니다.
  - 100개가 계산 되기에 한번도 나오지 않을 확률을 0으로 했습니다. 나온다면 오류가 납니다.

6. 참고
  - 유사 문제

Posted by 카켈



1. 목적
  - 특정 범위 사이에 계산을 반복하는 반복문을 이해한다.

2. 문제 (점수 : 15 점)
  - 키보드로 두 개의 정수를 입력받아 짝수/홀수의 개수와 합 그리고 전체의 합을 출력한다.
  - 시작 끝 범위가 반대로 입력 되어도 같은 결과가 나오게 하라.
  - for 문을 사용하되 do-while / while 문은 쓰지 않는다.
  - 출력 화면

두 정수를 입력하세요 : 890 123
123~890 사이의 짝수 개수 : 384, 합 : 194688
123~890 사이의 홀수 개수 : 384, 합 : 194304
123~890 까지의 총 합 : 388992
Press any key to continue

3. 이해
  - for 제어/반복문을 적당하게 쓸수 있는가?
  - 짝수와 홀수를 따로 계산할수 있는가?

4. 코드

#include <stdio.h>

int main()
{
 int from, to, i, total, even, odd, swap;
 long even_total, odd_total;
 from = to = i = total = even = odd = even_total = odd_total = 0;

 printf("두 정수를 입력하세요 : ");
 scanf("%d %d", &from, &to);

 if (from > to)
 {
  swap = from;
  from = to;
  to = swap;

 }

 for(i = from; i <= to; i++)
 {
  if(i % 2  == 0)
  {
   even++;
   even_total += i;
 
  }
  else
  {
   odd++;
   odd_total += i;

  }

 }

 printf("%d~%d 사이의 짝수 개수 : %d, 합 : %d\n", from, to, even, even_total);
 printf("%d~%d 사이의 홀수 개수 : %d, 합 : %d\n", from, to, odd, odd_total);
 printf("%d~%d 까지의 총 합 : %d\n", from, to, odd_total+even_total);

 return 0;
}

5. 해설
  - for 문은 시작 부터 일정 범위씩 증가하면서 범위내로 실행하는 구문입니다.
  - 짝수와 홀수 따로 변수를 만들어서 계산 합니다.

6. 참고
  - http://tc.pukyung.co.kr/CBasic/c-12.html : for 구문

Posted by 카켈



1. 목적

  - 조건문과 반복문을 익힌다.

2. 문제 (점수 : 20점)
  - 100부터 200 사이에 존재하는 4의 배수의 합을 출력한다.
  - 특정 조건문 제한 없음
  - 출력 화면

100 부터 200 사이의 4의 배수의 합 : 3900
Press any key to continue

3. 이해
  - 조건문을 이해하는가?
  - 특정 범위 사이내 구간을 활용할수 있는가?
  - 배수가 될수 있는 조건을 아는가?

4. 코드

#include <stdio.h>

int main(void)
{
 int i = 100;
 int total = 0;

 while(i<=200)
 {
  if (i % 4 == 0) total += i;
  i++;

 }

 printf("100 부터 200 사이의 4의 배수의 합 : %d\n",total);
 
 return 0;
}

5. 해설
  - 4의 나머지가 0 이 되었을때 4의 배수라는 조건을 걸고 반복문을 실행합니다.
  - 정수형 변수 i 가 100 ~ 200 까지 수행합니다.

6. 참고
  - 네이버 검색
  - 구글 검색
  - 내부 검색

Posted by 카켈




1. 목적
  - do-while 반복문을 쓸줄 안다.

2. 문제 (점수 : 10점)
  - 50 부터 150 까지의 합을 계산하는 프로그램을 만든다.
  - 반드시 do-while 구문을 사용할 것
  - 실행 화면

50부터 150까지의 합 : 10100
Press any key to continue

3. 이해
  - do-while 문의 구조와 실행 방식을 이해 했는가?

4. 코드

#include <stdio.h>

int main()
{
 int i, total;
 i = 50;
 total = 0;

 do
 {
  total += i;
  i++;

 }while(i <= 150);

 printf("50부터 150까지의 합 : %d\n",total);

 return 0;
}

5. 해설
  - do 안의 문장을 수행하고 while 안의 조건이 될때 까지 반복하는 구문입니다. 마지막에 세미콜론
    을 주의 하시기 바랍니다.
  - 그것 외에 다른 제어문의 차이점은 없습니다.
 
6. 참고
  - http://iid.kongju.ac.kr/~clee/lecture/04-2/prog1/study/chapter06/ch06_04.html :
    do-while 예문
  - 기존 문제 : do-while 검색

Posted by 카켈



1. 목적
  - 반복문을 이해 한다.

2. 문제
  - 미니 구구단을 만든다.
  - 1단 부터 9단까지 하되 곱셈은 5부터 9까지만 한다.
  - 출력 화면

=============================================
                  미니 구구단
=============================================
 1 * 5 =  5       2 * 5 = 10      3 * 5 = 15
 1 * 6 =  6       2 * 6 = 12      3 * 6 = 18
 1 * 7 =  7       2 * 7 = 14      3 * 7 = 21
 1 * 8 =  8       2 * 8 = 16      3 * 8 = 24
 1 * 9 =  9       2 * 9 = 18      3 * 9 = 27
----------------------------------------------
 4 * 5 = 20       5 * 5 = 25      6 * 5 = 30
 4 * 6 = 24       5 * 6 = 30      6 * 6 = 36
 4 * 7 = 28       5 * 7 = 35      6 * 7 = 42
 4 * 8 = 32       5 * 8 = 40      6 * 8 = 48
 4 * 9 = 36       5 * 9 = 45      6 * 9 = 54
----------------------------------------------
 7 * 5 = 35       8 * 5 = 40      9 * 5 = 45
 7 * 6 = 42       8 * 6 = 48      9 * 6 = 54
 7 * 7 = 49       8 * 7 = 56      9 * 7 = 63
 7 * 8 = 56       8 * 8 = 64      9 * 8 = 72
 7 * 9 = 63       8 * 9 = 72      9 * 9 = 81
----------------------------------------------
Press any key to continue

3. 이해
  - 반복문을 제대로 이해하고 활용할수 있는가?

4. 코드

#include <stdio.h>

int main()
{
 int i, j;
 i = 1;
 j = 5;

 printf("=============================================\n");
 printf("                  미니 구구단\n");
 printf("=============================================\n");

 while(j <= 9)
 {
  printf("%2d * %d = %2d\t %2d * %d = %2d\t %2d * %d = %2d\n", i, j, i * j, i + 1, j, (i+1) * j, (i+2), j, (i+2) * j);
  j++;

 }

 i = 4;
 j = 5;

 printf("----------------------------------------------\n");
 while(j <= 9)
 {
  printf("%2d * %d = %2d\t %2d * %d = %2d\t %2d * %d = %2d\n", i, j, i * j, i + 1, j, (i+1) * j, (i+2), j, (i+2) * j);
  j++;

 }
 
 i = 7;
 j = 5;

 printf("----------------------------------------------\n");
 while(j <= 9)
 {
  printf("%2d * %d = %2d\t %2d * %d = %2d\t %2d * %d = %2d\n", i, j, i * j, i + 1, j, (i+1) * j, (i+2), j, (i+2) * j);
  j++;

 }
 printf("----------------------------------------------\n");


 return 0;
}

5. 해설
  - while 문으로 간단하게 반복문을 구현했습니다.
  - 끊어서 표현 하기 위해서 3번 반복했습니다.

6. 참고
   - http://cakel.tistory.com/2656525 : 반복문 문제

Posted by 카켈
이전페이지 1 다음페이지