- 1 -
2019학년도1학기 출석수업 대체과제물 (중간)
❍ 교과목명 : C 프로그래밍
❍ 학 번 : 201934-363698
❍ 성 명 : 이상호
❍ 연 락 처 : 010-4078-7412
l 해당 실습 과제물을 참조하여 소스 코드를 작성하고 다음과 같이 제출하시오.
Ÿ 작성한 프로그램 소스의 각 라인에 주석을 달고 보고서 (아래한글, MS워드) 파일에 넣으시오.
Ÿ 2가지 함수가 정상적으로 동작하는 실행화면을 캡쳐하여 보고서 (아래한글, MS워드) 파일에 넣으시
오.
Ÿ 순서도 (flowchart)를 작성하고 보고서 (아래한글, MS워드) 파일에 넣으시오.
< 목 차 >
I. 소스 코드 ······················································································································ 2
II. 실행 결과 캡쳐본 ······································································································ 3
III. 순서도 ························································································································· 7
2.
- 2 -
I.소스 코드
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#pragma warning(disable:4996)
#define _crt_secure_no_warnings
void chang_shlee(char chName[]);
void draw_shlee(int arrsize);
int main() {
/**************************** (1) chang_shlee() ****************************/
char chName[100];
// 문자열 입력
printf("n문자열을 대소문자를 구분하여 입력 : ");
gets_s(chName);
printf("-----------------------------------------------------------n");
// 대소문자 변환 함수 호출
chang_shlee(chName);
/**************************** (2) draw_shlee() ****************************/
int iArrSize;
printf("5부터 10 사이의 홀수 숫자를 입력하시오 n(0을 입력시 프로그램 종료) n");
// 무한 반복문 수행
while (1) {
printf("n숫자 입력 : ");
// 배열 크기 (정수) 입력
scanf("%d", &iArrSize);
// 프로그램 종료의 경우
3.
- 3 -
if(iArrSize == 0) {
// 종료 메시지 출력
printf("-----------------------------------------------------------n");
printf("♥프로그램을 종료합니다. 이름 : 이상호");
printf("n-----------------------------------------------------------");
break;
}
if (5 <= iArrSize && iArrSize <= 10) {
// 홀수의 경우
if (iArrSize % 2 == 1) {
// 모래시계 출력 함수 호출
printf("-----------------------------------------------------------n");
draw_shlee(iArrSize);
printf("n-----------------------------------------------------------");
} else {
// 경고 메시지 출력
printf("-----------------------------------------------------------n");
printf("★ 홀수를 입력하시오. 학번 : 201934-363698");
printf("n-----------------------------------------------------------");
}
} else {
// 경고 메시지 출력
printf("-----------------------------------------------------------n");
printf("☆ 5부터 10 사이의 홀수를 입력하시오. 학과 : 컴퓨터과학과");
printf("n-----------------------------------------------------------");
}
}
return 0;
}
void chang_shlee(char chName[]) {
// 배열 초기화
char chSetName;
int iSetCount;
iSetCount = strlen(chName) - 1;
4.
- 4 -
if(iSetCount > 0) {
printf("변환된 결과물 출력 ==> ");
}
for (int iCount = iSetCount; iCount >= 0 ; iCount--) {
chSetName = chName[iCount];
if (isupper(chSetName)) { // 대문자 여부
printf("%c", tolower(chSetName)); // 소문자 변환
} else if (islower(chSetName)) { // 소문자 여부
printf("%c", toupper(chSetName)); // 대문자 변환
} else if (chSetName == ' ') { // 공백일 경우
printf("%c", '0'); // 공백 처리
} else {
printf("%c", "문자형을 확인해주세요.");
}
}
printf("n===========================================================n");
}
// 배열의 크기를 입력 받아 모래시계 출력
void draw_shlee(int iArrSize) {
// 배열 초기화
char arr[9][9] = {};
int iSetValue = 0;
int iTmpCount = iArrSize - 1;
int iSetNumber = iArrSize - 1;
// 배열 변수 설정
for (int iCount = 0; iCount <= iSetNumber; iCount++) {
int jSetCount, jSetNumber;
if (iCount > iTmpCount) {
jSetCount = iTmpCount;
jSetNumber = iCount;
} else {
jSetCount = iCount;
jSetNumber = iTmpCount;
}
5.
- 5 -
for(int jCount = jSetCount, jNumber = jSetNumber; jCount <= jNumber; jCount++) {
iSetValue++;
arr[jCount][iCount] = iSetValue;
}
iTmpCount--;
}
// 배열 출력
for (int iCount = 0; iCount <= iSetNumber; iCount++) {
for (int jCount = 0; jCount <= iSetNumber; jCount++) {
int iGetValue = arr[iCount][jCount];
// 값이 있을 경우
if (iGetValue != 0 && iGetValue != NULL) {
printf("%4d", iGetValue);
} else {
printf("%4s", "0");
}
}
printf("n");
}
}
그림 1. 대소문자 변환 (change_shlee) 및 모래시계 산출 함수(draw_shlee)의 소스 코드.
6.
- 6 -
II.실행 결과 캡쳐본
그림 2. 대소문자 변환 (change_shlee) 및 모래시계 산출 함수(draw_shlee)에 대한 실행 결과.
7.
- 7 -
III.순서도
그림 3. 대소문자 변환 (change_shlee) 및 모래시계 산출 함수(draw_shlee)를 위한 자료처리 흐름도.