개발자의 고군분투기

C언어 3일차_실습 본문

C언어

C언어 3일차_실습

뉴뉴베리포리 2016. 11. 3. 10:39
함수 / 지역변수 / 배열 / 문자열

1. 메뉴 입력 프로그램
화면에 메뉴 목록을 출력하고 각 메뉴 화면에 맞는 값을 입력하여 해당 메뉴를 실행하는 프로그램을 작성하시오
- 각 메뉴 실행시 화면을 지우고 메뉴에 맞는 새로운 화면을 출력하도록.
	화면 지우기 : 처음에 windows.h 부른 후 system("cls");
- 각 메뉴 실행은 함수를 사용하여 실행하도록
- 각 메뉴 진입 후 다시 원래 메뉴로 돌아올 수 있도록

실행예

=============
메뉴 테스트 프로그램

=============
1. 1번 메뉴 실행
2. 2번 메뉴 실행
3. 3번 메뉴 실행
4. 종료

메뉴를 입력하세요 :  1

--------------------------------------------

1번 메뉴 화면

아무키나 누르면 원래 메뉴로 돌아갑니다.

--------------------------------------------

int main(void)
{
	int input_num;

	printmenu();
	input_num = input_menu();
	
	switch (input_num)
	{
	case 1 : menu1(); break;
	case 2 : menu2(); break;
	case 3 : menu3(); break;
	default : break;
	}
}

2. 문자 검색 프로그램
- 문자열과 문자를 각각 입력하고 입력한 문자열 내에 입력한 문자가 몇번째 위치에 있는지 출력하는 프로그램을 작성하시오.

실행예
문자열 : Hello
문자 : o
'Hello' 문자열에서 o는 5번째 문자입니다.

문자열 : Goguma
문자 : x
'Goguma' 문자열에서 x 문자는 존재하지 않습니다.


3. 전광판 프로그램

입력한 문자열을 전광판처럼 스크롤하며 출력하도록 프로그램 작성하시오.

문자열 입력 : Hello World! 

Hello World! 
ello World! H
llo World! He
lo World! Hel
....



4. 정렬 프로그램
- 배열을 사용하여 10개의 숫자를 입력하고, 숫자를 크기 순으로 정렬하는 프로그램을 작성하시오.
- 정렬 알고리즘은 선택정렬 / 버블정렬을 사용







=======================================

3번 샘플 

#include<stdio.h>
#include<string.h>

int main(void)
{
	char temp[100];
	int len, i,j,k;

	printf("문자열을 입력하시오 : ");
	gets(temp);
	strcat(temp," ");
	len = strlen(temp);

	for(i=0;i<len;i++)
	{
		for(j=i;j<len;j++)
		{
			printf("%c", temp[j]);
		}

		for(k=0;k<i;k++)
		{
			printf("%c", temp[k]);
		}
		printf("\n");
	}	
}	

=======================================

4번 샘플

맨 처음 과정
1단계
0-1, 1-2, 2-3, 3-4, .... 8-9
2단계
0-1, 1-2, 2-3, 3-4, .... 7-8
3단계
0-1, 1-2, 2-3, 3-4, .... 6-7
...
9단계
0-1

#include<stdio.h>
#define ARRAYSIZE 10

int main(void)
{
	int num[ARRAYSIZE]={1,6,3,9,10,2,8,4,7,5};
	int i, j, temp;

	for(i=ARRAYSIZE-1;i>0;i--)		
			// 10개의 원소를 버블정렬하기 위해 9번 반복
	{
		for(j=0;j<i;j++)
		{
			if(num[j]>num[j+1])
			{
				// 스왑
				temp=num[j];
				num[j]=num[j+1];
				num[j+1]=temp;
			}
		}
	}

	for(i=0;i<ARRAYSIZE;i++)
	{
		printf("%d ",num[i]);
	}
	printf("\n");
}

==========================================

선택정렬

1차시
0-1, 0-2, 0-3 ...... 0-9	// 0번에 가장 작은 값이 저장
2차시
1-2, 1-3, 1-4 .... 1-9		// 1번에 그 다음 작은 값이 저장
...
9차시
8-9			// 9번에 제일 큰 값이 저장

#include<stdio.h>
#define ARRAYSIZE 10

int main(void)
{
	int i,j,temp;
	int num[ARRAYSIZE]={1,6,3,9,10,2,8,4,7,5};

	for(i=0;i<ARRAYSIZE-1;i++)
	{
		for(j=i+1;j<ARRAYSIZE;j++)
		{
			if(num[i]>num[j])
			{
				// 스왑
				temp=num[i];
				num[i]=num[j];
				num[j]=temp;
			}
		}
	}

	for(i=0;i<ARRAYSIZE;i++)
	{
		printf("%d ", num[i]);
	}
	printf("\n");
}

==============================================

1번

#include<stdio.h>
#include<Windows.h>

void print_menu(void);
int menu_select(void);
void menu1(void);
void menu2(void);
void menu3(void);
void error(void);

int main(void)
{
	int input_num;


	while (1)
	{
		print_menu();		// 메뉴 화면 출력 담당 함수

		input_num = menu_select();

		switch (input_num){
		case 1 : menu1(); break;
		case 2 : menu2(); break;
		case 3 : menu3(); break;
		default : error(); break;
		};
	}

}

void print_menu(void)
{
	system("cls");
	printf("===================\n\
==== 메뉴 출력 ====\n\
===================\n");
	printf("1. 1번 메뉴 호출\n");
	printf("2. 2번 메뉴 호출\n");
	printf("3. 3번 메뉴 호출\n");
	printf("=================\n");
	printf("선택하시오 : ");
}

int menu_select(void)
{
	int num;
	scanf("%d", &num);
	return num;
}

void menu1(void)
{
	system("cls");
	printf("1번 메뉴 실행화면\n");
	printf("엔터 키를 누르면 메인 메뉴로 돌아갑니다.");
	system("pause");
}

void menu2(void)
{
	system("cls");
	printf("2번 메뉴 실행화면\n");
	printf("엔터 키를 누르면 메인 메뉴로 돌아갑니다.");
	system("pause");
}

void menu3(void)
{
	system("cls");
	printf("3번 메뉴 실행화면\n");
	printf("엔터 키를 누르면 메인 메뉴로 돌아갑니다.");
	system("pause");
}

void error(void)
{
	system("cls");
	printf("에러화면\n");
	printf("엔터 키를 누르면 메인 메뉴로 돌아갑니다.");
	system("pause");
}


'C언어' 카테고리의 다른 글

C언어 4일차_실습  (0) 2016.11.04
C언어 4일차_정리  (0) 2016.11.04
C언어 3일차_정리  (0) 2016.11.03
C언어 2일차_실습  (0) 2016.11.03
C언어 2일차_정리  (0) 2016.11.03
Comments