프로그래밍 기본지식 8탄

최주영·2022년 12월 3일
0

C언어

목록 보기
9/15

✅자료(data) 란 무엇인가 ?

-> 현실 세계로부터 수집한 사실이나 개념의 값 또는 이들의 집합
가공하지 않은 형태의 데이터로서 그 자체로 그 의미를 파악하기 어렵다


✅정보(information) 란 무엇인가 ?

-> 특별한 용도로 사용하기 위해 처리/가공한 형태의 데이터
데이터, 그 자체가 의미를 내포한다.


✅빅 데이터(big data) 란 무엇인가 ?

-> 기존 데이터베이스 관리 도구의 능력을 넘어서는 대량의 정형 또는 비정형의 데이터 조차 포함한 데이터로부터 가치를 추출하고 결과를 분석하는 기술


✅배열(array)이란 무엇이며, 왜 사용하는가 ?

-> 같은 타입의 변수들로 이루어진 유한 집합이라 정의한다.
이러한 배열은 동일한 데이터 타입의 변수를 여러개 사용해야하는 경우 사용한다.


✅배열의 사용법

  • 자료형 변수이름[크기];
    ex) int a[5]; // 초기값을 주지 않아 모두 쓰레기 값으로 저장됨
    초기화 선언 가능 -> int a[5] = {1,2,3,4,5};

  • 배열의 인덱스는 항상 0부터 시작함

  • 배열의 초기화는 변수를 선언할때처럼 생략하거나, 갯수보다 적은 수로 초기화 가능
    ex) int b[5] = {1,2};
    -> 1,2는 정상적으로 넣고, 그 이후는 0으로 초기화됨

  • 배열을 모두 0으로 초기화 하는 방법
    ex) int a[5] = {0};

  • 개수를 지정하지 않고 선언하는 방법
    ex) int a[] = {1,2,3};
    ** 단 -> int a[]; 는 오류임

  • 2차원 배열
    위에서 선언한 배열들을 전부 다 1차원 배열이다.
    선언 예시 : int a[2][3] = { {1, 2, 3}, {4, 5, 6} };
    선언 방법 : 자료형 변수명[행의 갯수][열의 갯수];


✅Number 이란 이름의 정수 배열 10개를 선언하고, 배열에 1~100 사이의 난수를 발생시켜 저장한 후 배열의 값 중 가장 작은(MIN)값과 가장 큰(MAX) 값을 찾는 프로그램을 작성

  • 소스코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
   int i;
   int Number[10] = { 0 };
   int Min, Max;
   srand((unsigned)time(NULL));
	printf("문제 : 정수 배열에 1~100 사이 난수 발생시켜 배열 값 중 최소값과 최대값 구하기\n");
printf("==============================\n");
  for (i = 0; i < 10; i++)
  {
    Number[i] = rand() % 100;
    printf("Number[%d] : %d\n",i,Number[i]);
  }
    Min = Number[0];
    Max = Number[0];

  for (i = 1; i < 10; i++)
  {
    if (Min > Number[i])
    {
      Min = Number[i];
    }
    if (Max < Number[i])
    {
     Max = Number[i];
    }
  }
printf("==============================\n");
printf("최소값은 %d, 최대값은 %d입니다.\n", Min, Max);
printf("==============================\n");
printf("작성자 : 2017E7043 최주영");
}

✅앞의 문제에서 MIN 과 MAX 를 구하는 부분을 함수로 처리한 프로그램을 작성

  • 소스 코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int Min_function(int Number[10])
{
  int i;
  int Min1;
  Min1 = Number[0];
  for (i = 1; i < 10; i++)
  {
    if (Min1 > Number[i])
    {  
      Min1 = Number[i];
    }
  }
      return Min1;
}


  int Max_function(int Number[10])
{
   int i;
   int Max1;
   Max1 = Number[0];
  for (i = 1; i < 10; i++)
 {
   if (Max1 < Number[i])
  {
    Max1 = Number[i];
  }
 }
   return Max1;
}

 int main()
{
  int i;
  int Number[10] = { 0 };
  srand((unsigned)time(NULL));
	printf("문제 : 정수 배열에 1~100 사이 난수 발생시켜 배열 값 중 최소값과 최대값 구하기\n");
  printf("==============================\n");
   for (i = 0; i < 10; i++)
  {
    Number[i] = rand() % 100;
    printf("Number[%d] : %d\n", i, Number[i]);
  }

printf("==============================\n");
	printf("최소값은 %d, 최대값은 %d입니다.\n", Min_function(Number),Max_function(Number));
printf("==============================\n");
printf("작성자 : 2017E7043 최주영");
}

✅Number 이란 이름의 정수 배열 10개를 선언하고, 배열에 1~100 사이의 난수를 발생시켜 저장한 후배열에 저장된 값의 합계와 평균을 출력하고, 배열의 값을 크기순으로 정렬(Sort)하고 출력하는 프로그램을 작성하시오.

  • 소스코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	int i,j,temp;
	int Number[10] = { 0 };
	int sum = 0;
	float avg = 0;
	srand((unsigned)time(NULL));
	printf("문제 : 정수 배열에 1~100 사이 난수 발생시켜 합계,평균, 배열값을 크기순(오름차순)으로 정렬하기\n");
	printf("==============================\n");
	printf("====정렬전====\n");
	for (i = 0; i < 10; i++)
	{
		Number[i] = rand() % 100;
		sum = sum + Number[i];
		printf("Number[%d] : %d\n", i, Number[i]);
	}

	avg = (float)sum / 10;

	for (i = 0; i < 10; i++)
	{
		for (j = i+1; j < 10; j++)
		{
			if (Number[i] > Number[j])
			{
				temp = Number[i];
				Number[i] = Number[j];
				Number[j] = temp;
			}
		}
	}
	printf("\n");
	printf("====정렬후====\n");
	for (i = 0; i < 10; i++)
	{
		printf("Number[%d] : %d\n", i, Number[i]);
	}

	printf("==============================\n");
	printf("합계는 %d, 평균은 %.2f입니다.\n", sum, avg);
	printf("==============================\n");
	printf("작성자 : 2017E7043 최주영");
}
  • 출력결과

✅이름순으로 정렬하여 이름과 학번이 출력되는 프로그램을 작성

  • 소스코드
#include <stdio.h>
#include <string.h>

int main()
{

	int i, j,k;
	char temp[10];
	char data[5][2][20] =
	{
		{"202105001","유수봉"},
		{"202104002","갑시다"},
		{"202101003","오시오"},
		{"202102004","반갑소"},
		{"202103005","나가요"},
	};
	printf("문제 : 사전식 이름순으로 정렬하여 이름과 학번이 출력되는 프로그램\n");
	printf("\n");
	printf("==== 정렬 하기전====\n");
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 2; j++)
		{
			printf("%s ", data[i][j]);
		}
		printf("\n");
	}
	printf("\n");


	for (i = 0; i < 5; i++)
	{
		for (j = i+1; j < 5; j++)
		{
			if (strcmp(data[i][1], data[j][1]) > 0)
			{
				strcpy(temp, data[i][1]);
				strcpy(data[i][1], data[j][1]);
				strcpy(data[j][1], temp);
			}
	
		}
	}
	printf("===정렬 후====\n");
	for (i = 0; i < 5; i++)
	{
		for(j=0; j<2; j++)
		{
			printf("%s ", data[i][j]);
		}
		printf("\n");
	}
	printf("===================\n");
	printf("작성자 : 2017E7043 최주영");

}
  • 출력결과

✅학번순으로 정렬하여 이름과 학번이 출력되는 프로그램을 작성

  • 소스코드
#include <stdio.h>
#include <string.h>

int main()
{

	int i, j;
	char temp[10];
	char data[5][2][20] =
	{
		{"202105001","유수봉"},
		{"202104002","갑시다"},
		{"202101003","오시오"},
		{"202102004","반갑소"},
		{"202103005","나가요"},
	};
	printf("문제 : 오름차순 학번순으로 정렬하여 이름과 학번이 출력되는 프로그램\n");
	printf("\n");
	printf("====학번 정렬 하기전====\n");
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 2; j++)
		{
			printf("%s ", data[i][j]);
		}
		printf("\n");
	}
	printf("\n");
	for (i = 0; i < 5; i++)
	{
		for (j = i + 1; j < 5; j++)
		{
			if (strcmp(data[i], data[j]) > 0)
			{
				strcpy(temp, data[i]);
				strcpy(data[i], data[j]);
				strcpy(data[j], temp);
			}
	
		}
	}
	printf("===학번 정렬 후====\n");
	for (i = 0; i < 5; i++)
	{
		for(j=0; j<2; j++)
		{
			printf("%s ", data[i][j]);
		}
		printf("\n");
	}
	printf("===================\n");
	printf("작성자 : 2017E7043 최주영");
}
  • 출력결과
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글