문제
- 1에서 100까지 합을 구하는 순서도를 C로 구현하십시오.
- 1부터 100,000까지, 100,000 포함하여 7의 배수가 몇 개 있는지를 구하는 순서도에 대해 C로 구현하십시오.
- 수들을 입력받아서 짝수의 개수와 홀수의 개수를 구하는 문제에 대해 C로 구현하십시오.
내가 생각한 답
문제 1번
// 1_sum100.c
// [주석 단락]
/*****************************************************************************
* 파일 명칭 : 1_sum100.c
* 기 능 : 1에서 100까지 합하여 총합 출력
* 함수 명칭 : main
* 출 력 : 총합
* 입 력 :
* 작 성 자 : 채 종 홍
* 작성 일자 : 2020/01/15
*****************************************************************************/
// [전처리기 단락]
#include <stdio.h>
#define MAX 100
// [함수 선언 단락]
int main(int argc, char* argv[]);
// [함수 정의 단락]
int main(int argc, char* argv[]) {
int sum = 0;
int number = 1;
//1. 숫자가 최댓값보다 작거나 같으면 반복한다.
while (number <= MAX) {
//1.2. 총합을 계산한다.
sum += number;
//1.1. 숫자를 증가한다.
number++;
}
/*
for(number=1; number <= MAX; nmuber++){
sum += number;
number++;
}
*/
//2. 총합을 출력한다.
printf("총합 : %d", sum);
//3. 끝낸다.
return 0;
}
문제 2번
// 2_multipleSeven.c
// [주석 단락]
/*****************************************************************************
* 파일 명칭 : 2_multipleSeven.c
* 기 능 : 7의 배수 개수를 구한다.
* 함수 명칭 : main
* 출 력 : 7의 배수 개수
* 입 력 :
* 작 성 자 : 채 종 홍
* 작성 일자 : 2020/01/15
*****************************************************************************/
// [전처리기 단락]
#include <stdio.h>
#define MAX 100000
#define MULTIPLE 7
// [함수 선언 단락]
int main(int argc, char* argv[]);
// [함수 정의 단락]
int main(int argc, char* argv[]) {
int count = 0;
int number = 1;
int remainder = 0;
int remainder2 = 0;
//1. 숫자가 최댓값보다 작거나 같으면 반복한다.
while (number <= MAX) {
//1.2. 나머지를 계산한다.
remainder = number - (number / MULTIPLE) * MULTIPLE;
//remainder = number % MULTIPLE;
//1.3. 7의 배수를 판별한다.
if (remainder == 0) {
count += 1;
}
//1.1. 숫자를 증가한다.
number++;
}
//2. 개수를 출력한다.
printf("100000 안에 있는 7의 배수 개수 : %d", count);
//3. 끝낸다.
return 0;
}
문제 3번
// 3_oddOrEven.c
// [주석 단락]
/*****************************************************************************
* 파일 명칭 : 3_oddOrEven.c
* 기 능 : 입력한 숫자의 짝수, 홀수 개수를 구하여 출력
* 함수 명칭 : main
* 출 력 : 짝수 개수, 홀수 개수
* 입 력 : 입력된 숫자
* 작 성 자 : 채 종 홍
* 작성 일자 : 2020/01/15
*****************************************************************************/
// [전처리기 단락]
#include <stdio.h>
// [함수 선언 단락]
int main(int argc, char* argv[]);
// [함수 정의 단락]
int main(int argc, char* argv[]) {
int oddCount = 0;
int evenCount = 0;
int inputNumber;
int number = 1;
int remainder;
//1.2. 번호를 입력한다.
scanf_s("%d", &inputNumber);
//1. 번호가 입력한 숫자보다 작거나 같으면 반복한다.
while (number <= inputNumber) {
//1.3. 나머지를 계산한다.
remainder = number - (number / 2) * 2;
//remainder = number % 2;
//1.3. 짝수와 홀수를 판별한다.
if (remainder == 0) {
//1.4. 짝수이면 짝수 개수를 증가한다.
oddCount += 1;
}
else {
evenCount += 1;
}
//1.1. 번호를 증가한다.
number++;
}
//2. 짝수 개수와 홀수 개수를 출력한다.
printf("짝수 개수 : %d 홀수 개수 : %d", oddCount, evenCount);
//3. 끝낸다.
return 0;
}
수정해야될 부분
카페를 돌아다니면서 다른 분들의 코드들을 찾아보니 문제 이해를 잘못했다. 계속 숫자를 입력받으면서 그 숫자가 짝수인지 홀수인지 판별하고 개수를 증가시키면 되었다…. 나는 숫자를 입력받으면 그 숫자 안에 짝수, 홀수 개수가 몇개인지를 판별하는 문제인줄 알았는데 말이다.
아래는 다르게 작성된 요소를 적용한 순서도와 코드이다.
문제 3번 순서도(수정)
문제 3번 코드(수정)
// 3_oddOrEven2.c
// [주석 단락]
/*****************************************************************************
* 파일 명칭 : 3_oddOrEven2.c
* 기 능 : 입력한 숫자의 짝수, 홀수 개수를 구하여 출력
* 함수 명칭 : main
* 출 력 : 짝수 개수, 홀수 개수
* 입 력 : 입력된 숫자
* 작 성 자 : 채 종 홍
* 작성 일자 : 2020/01/15
*****************************************************************************/
// [전처리기 단락]
#include <stdio.h>
#define DIVIDER 2
// [함수 선언 단락]
int main(int argc, char* argv[]);
// [함수 정의 단락]
int main(int argc, char* argv[]) {
int oddCount = 0;
int evenCount = 0;
int inputNumber;
int remainder;
//1.1. 숫자를 입력한다.
scanf_s("%d", &inputNumber);
//1. 파일의 끝이 아닐 동안 반복한다.
while (!feof(stdin)) {
//1.2. 나머지를 계산한다.
remainder = inputNumber - (inputNumber / DIVIDER) * DIVIDER;
//remainder = number % 2;
//1.2. 짝수와 홀수를 판별한다.
if (remainder == 0) {
//1.3. 짝수이면 짝수 개수를 증가한다.
oddCount += 1;
}
else {
//1.4. 홀수이면 홀수 개수를 증가한다.
evenCount += 1;
}
//1.5. 짝수 개수와 홀수 개수를 증가한다.
printf("짝수 개수 : %d 홀수 개수 : %d", oddCount, evenCount);
//1.1. 숫자를 다시 입력한다.
scanf_s("%d", &inputNumber);
}
//2. 끝낸다.
return 0;
}
P.S.
vscode에서 c를 돌리려다보니 설정 삽질을 했다. 문제는 해결이 안됬다는것…ㅜㅜ 나중에 차분히 보면서 해야겠다.