[방송통신대 컴퓨터과학과] 2019년 1학기 전공 C 프로그래밍 과제물

 정보

  • 업무명     : C 프로그래밍 과제물

  • 작성자     : 이상호

  • 작성일     : 2019-09-03

  • 설   명     :

  • 수정이력 :

    • 2020-04-06 : 서식 보완

 

 내용

[개요]

  • 안녕하세요? 웹 개발 및 연구 개발을 담당하고 있는 해솔입니다.

  • 오늘 포스팅은 C 프로그래밍 과제물을 소개드리고자 합니다.

 

etc-image-0

 

[특징]

  • C 프로그래밍 과제물에 대한 이해를 돕기위해 작성

 

[기능]

  • 과제물 지시사항

  • 과제물 작성 요령

 

[활용 자료]

  • 인터넷 검색

 

[과제물 작성 요령]

  • 과제물 작성 계획 세우기

    • 과제물 작성을 위하여 계획 및 준비, 글쓰기, 제출과 같이 3 단계로 구성

    • 1 단계는 우선 계획 및 준비로서 공고 확인, 제출 기간 확인, 과제물 문제를 파악

    • 2단계의 경우 글쓰기로서 자료 검색 수집 및 개요 작성 그리고 본문 쓰기 및 수정

    • 끝으로 제출 마감일뿐만 아니라 파일 용량 검사 및 온라인시스템 제출

  • 과제물 문제 파악 요령

    • 과제물 문제에서 교수님의 지시사항을 정확히 간파하여 작성 

    • 특히 제출 파일의 양식/용량 및 스타일 형식 그리고 작성 분량에 유의

  • 나만의 글쓰기 전략

    • 앞서 작성 계획에서와 같이 단계별로 수행이 필연

    • 추가로 각 과제물마다 한글 또는 워드 양식에서 각자만의 스타일을 바탕으로 글의 내용 작성

    • 또한 각종 인터넷 검색 및 도서를 참조하여 내용을 제시할 뿐만 아니라 그에 따른 판단의 근거에 대한 명확한 인용 및 출처가 정확하게 표시

  • 학술 검색을 위한 유용한 방법

    • 인터넷은 1950대에 컴퓨터의 개발과 더불어 너무 많은 정보의 바다에서 살고 있기 때문에 자신에게 필요한 정보 발굴 능력 요구 

    • 인터넷 검색이 익숙하지 않을 경우 네이버 검색을 추천하고 익숙하면 구글 검색이 유용

    • 그러나 일반적으로 네이버 또는 구글로 검색할 경우 다수의 블로그에서 중복되는 정보를 확인할 수 있고 이러한 정보들은 대부분 복사 붙여넣기로 인해 남용되고 있는 실정

    • 따라서 이 보다는 전 세계 검색엔진 2위를 차지한 Yahoo! JAPAN (https://www.yahoo.co.jp)에서 검색하여 구글 번역할 경우 원하는 정보를 쉽게 얻음

    • 연구 보고서 또는 SCI/SCIE 논문을 보기 위해서 대학교에서 저널을 구독하는 것이 일반적이나 모든 저널을 구독하기에는 상당한 경제적 부담이 되기 때문에 SCI-HUB (https://sci-hub.tw/)를 통해 보는 것을 추천

 

[사용법]

  • 과제물 서식을 바탕으로 작성

 

[사용 OS]

  • Windows 10

 

[사용 언어]

  • C

  • 한글 v2018

 

 과제물 문제

 

 소스 코드

[명세]

#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);

		// 프로그램 종료의 경우
		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;

	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;
		}

		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");
	}
}

 

[GitHub Gist]

#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);
// 프로그램 종료의 경우
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;
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;
}
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");
}
}

 

 관련 자료

[제출본]

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com