본문 바로가기

C

3주차 수업내용

역순 정렬

 

 

#include <stdio.h> // 표준 입출력 라이브러리를 포함시킵니다.

 

#define SIZE 3 // 전처리기를 이용해 SIZE를 상수 3으로 정의합니다.
// WEIGHT 구조체를 정의합니다. 구조체는 이름과 몸무게를 저장합니다.
typedef struct {
char name[10]; // 이름을 저장할 문자 배열
double w; // 몸무게를 저장할 실수형 변수
}WEIGHT;
void swap(WEIGHT*, WEIGHT*); // 두 WEIGHT 구조체를 교환하는 함수 swap의 선언입니다.
int main()
{
// WEIGHT 구조체 배열을 선언하고 초기화합니다. SIZE(3)만큼의 요소를 갖습니다.
WEIGHT man[SIZE] = { {"한개발",57.5},
{"엄청군",125.6},
{"갈비양",35.7} };
int i, j; // 반복문 제어를 위한 변수 선언
// 버블 정렬을 사용하여 man 배열을 몸무게 기준으로 내림차순 정렬합니다.
for (i = 0; i < 2; i++) {
for (j = i + 1; j < 3; j++) {
if (man[i].w > man[j].w) {
swap(&man[i], &man[j]); // 몸무게가 더 큰 경우 두 구조체의 위치를 바꿉니다.
}
}
}
// 정렬된 배열의 내용을 출력합니다.
printf(" 이름 \t체중\n");
for (i = 0; i < 3; i++) {
printf(" %s %5.1f\n", man[i].name, man[i].w);
}
return 0;
}
// swap 함수의 정의입니다. WEIGHT 구조체의 포인터를 매개변수로 받아 구조체 내용을 교환합니다.
void swap(WEIGHT* mani, WEIGHT* manj)
{
WEIGHT temp; // 임시 저장을 위한 WEIGHT 구조체 변수
temp = *mani; // mani가 가리키는 구조체를 temp에 복사
*mani = *manj; // manj가 가리키는 구조체를 mani가 가리키는 위치에 복사

 

*manj = temp; // temp에 저장된 구조체를 manj가 가리키는 위치에 복사
}

 

 

  • 파라미터(parameter): 함수를 정의할 때, 함수가 필요로 하는 값을 나타내는 변수의 이름입니다. 파라미터는 함수의 괄호 안에 선언되며, 함수 내부에서 사용됩니다. 파라미터는 함수에 전달되는 아규먼트(argument) 값을 받아들이는 역할을 합니다.
  • 아규먼트(argument): 함수를 호출할 때, 함수에 전달되는 실제 값입니다. 호출하는 쪽에서 함수에 전달하는 데이터를 아규먼트라고 합니다. 함수 호출 시, 아규먼트는 함수의 파라미터에 대입되어 함수 내부에서 사용됩니다.
  • 리턴 값(return value): 함수가 실행을 마친 후, 호출한 쪽으로 반환하는 값입니다. 함수의 결과물이라고 생각할 수 있습니다. 함수 내부에서 계산된 값을 반환하거나, 다른 처리를 통해 얻은 값을 반환할 수 있습니다. 리턴 값은 함수 호출 결과로 사용되거나, 다른 변수에 저장되어 사용될 수 있습니다.

 

함수사용

- 구조적인 프로그래밍 방식

 

 

항상 main으로 시작하진 않는다

 

 

한 프로젝트에 여러 파일 생성시 프로젝트에서 제외를 해야 실행 가능 (main 중복시)

- 제외 후 복구 (소스파일 > 추가 > 기존 항목)

 

return 0; 후에 프로그램 종료

return 0; 위에 프로그램 하기

 

 

return 0;은 C 프로그램에서 main 함수의 반환 값으로 사용되는 관례적인 표현입니다. main 함수가 종료될 때 반환하는 값으로, 0은 일반적으로 프로그램이 성공적으로 종료되었음을 나타냅니다.

C 프로그램에서 main 함수의 반환 값은 운영 체제 또는 다른 프로그램이 현재 프로그램의 실행 결과를 확인하는 데 사용될 수 있습니다. 반환 값을 통해 실행 중인 프로그램이 정상적으로 동작했는지, 오류가 발생했는지 등을 확인할 수 있습니다.

일반적으로 0은 성공을 나타내는 값으로 사용되며, 비정상적인 종료 또는 오류 발생 시에는 0이 아닌 다른 값을 반환할 수도 있습니다. 이는 프로그래머가 원하는 방식으로 반환 값을 설정할 수 있는 유연성을 제공합니다.

따라서, return 0;은 프로그램이 성공적으로 종료되었음을 나타내기 위해 사용되는 관례적인 표현입니다.

 

 

 

자주 사용하는 함수

 

C 언어에서 가장 자주 사용되는 함수들을 일반적인 순서로 알려드리겠습니다:

1. `printf`: 출력을 위한 함수로, 화면에 텍스트를 출력합니다.

2. `scanf`: 사용자의 입력을 받기 위한 함수로, 키보드로부터 데이터를 입력받습니다.

3. `malloc`/`free`: 동적 메모리 할당과 해제를 위한 함수로, 필요에 따라 메모리를 동적으로 할당하고 해제합니다.

4. `strcpy`/`strcat`/`strlen`: 문자열 처리를 위한 함수로, 문자열을 복사하거나 연결하고, 문자열의 길이를 계산합니다.

5. `strcmp`/`strncmp`: 문자열 비교를 위한 함수로, 두 문자열을 비교하여 동일 여부를 확인합니다.

6. `memcpy`/`memmove`: 메모리 복사를 위한 함수로, 메모리 영역을 복사하거나 이동합니다.

7. `atoi`/`atof`: 문자열을 정수나 실수로 변환하는 함수로, 문자열을 숫자로 변환합니다.

8. `rand`/`srand`: 난수 생성을 위한 함수로, 임의의 난수를 생성하거나 시드 값을 설정합니다.

9. `fopen`/`fclose`/`fread`/`fwrite`: 파일 입출력을 위한 함수로, 파일을 열고 닫으며, 데이터를 읽거나 쓸 수 있습니다.

10. `malloc`/`calloc`/`realloc`: 동적 메모리 할당을 위한 함수로, 메모리를 동적으로 할당하고 해제합니다.

이는 일반적으로 자주 사용되는 함수들의 순서이지만, 실제로 사용되는 함수의 순서는 프로그램의 목적과 구조에 따라 다를 수 있습니다. 따라서, 개별 프로그램의 요구사항에 따라 함수 사용 순서가 달라질 수 있습니다.

 

 

랜덤값 발생 코드

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
// 현재 시간을 시드로 사용하여 랜덤값을 초기화합니다.
srand(time(NULL));
// 1부터 100 사이의 랜덤한 정수를 발생시킵니다.
int randomNumber = rand() % 100 + 1;
printf("랜덤값: %d\n", randomNumber);
return 0;
}
 
 
 

많이쓰는 예약어

 

  1. int: 정수형 변수를 선언할 때 사용되는 예약어입니다.
  2. char: 문자형 변수를 선언할 때 사용되는 예약어입니다.
  3. float / double: 실수형 변수를 선언할 때 사용되는 예약어입니다. float은 단정밀도 실수, double은 배정밀도 실수를 표현합니다.
  4. void: 함수의 반환형이 없음을 나타내는 예약어입니다.
  5. if / else: 조건문을 작성할 때 사용되는 예약어입니다. if는 조건이 참일 때 실행되는 블록을 정의하고, else는 조건이 거짓일 때 실행되는 블록을 정의합니다.
  6. for: 반복문을 작성할 때 사용되는 예약어입니다. 정해진 횟수만큼 반복 실행됩니다.
  7. while / do-while: 반복문을 작성할 때 사용되는 예약어입니다. while은 조건을 체크한 후 반복 실행되고, do-while은 먼저 실행한 후 조건을 체크합니다.
  8. switch / case / break: 다중 조건문을 작성할 때 사용되는 예약어입니다. switch는 선택할 값을 지정하고, case는 해당 값과 일치하는 경우 실행되는 블록을 정의합니다. break는 switch 문을 빠져나올 때 사용됩니다.
  9. return: 함수에서 값을 반환할 때 사용되는 예약어입니다.
  10. typedef: 새로운 자료형을 정의할 때 사용되는 예약어입니다.
  11. struct: 구조체를 정의할 때 사용되는 예약어입니다.
  12. enum: 열거형을 정의할 때 사용되는 예약어입니다.
  13. sizeof: 변수나 자료형의 크기를 반환하는 예약어입니다.
  14. const: 변수를 상수로 선언할 때 사용되는 예약어입니다.
  15. static: 지역 변수의 지속성을 제어할 때 사용되는 예약어입니다.

 

자주 사용하는 구두점

 

  1. ; (세미콜론): 문장의 끝을 나타내는 구두점입니다. 문장이 끝나면 세미콜론을 붙여야 합니다.
  2. , (쉼표): 변수나 상수를 구분할 때 사용되는 구두점입니다. 여러 개의 변수 또는 상수를 동시에 선언하거나 함수의 인자를 구분할 때 주로 사용됩니다.
  3. . (점): 구조체나 구조체 포인터를 사용할 때 멤버에 접근하기 위해 사용되는 구두점입니다.
  4. -> (화살표 연산자): 구조체 포인터를 사용할 때 포인터가 가리키는 구조체의 멤버에 접근하기 위해 사용되는 구두점입니다.
  5. : (콜론): case 문에서 해당 조건과 일치하는 경우 실행되는 블록을 정의할 때 사용되는 구두점입니다.
  6. () (괄호): 함수나 함수 포인터를 호출할 때 인자를 전달하거나 그룹화할 때 사용되는 구두점입니다.
  7. [] (대괄호): 배열을 선언하거나 배열 요소에 접근할 때 사용되는 구두점입니다.
  8. {} (중괄호): 코드 블록을 정의할 때 사용되는 구두점입니다. 함수, 조건문, 반복문 등의 블록을 중괄호로 감싸서 구성합니다.
  9. () (소괄호): 수식의 연산자 우선순위를 명시하거나 표현식을 그룹화할 때 사용되는 구두점입니다.
  10. /* */ (주석): 프로그램의 설명이나 코드의 일부를 주석 처리할 때 사용되는 구두점입니다. 주석은 컴파일러에 의해 무시됩니다.

 

구두점 사용 예시

 

 

정렬 단축키

-Ctrl + k + f

 

주석 단축키

-Ctrl + k + c, Ctrl + k + u ( 해제 )

 

 

 

 

이스케이프 시퀀스

- 역슬래시 (\)와 영문자, 특수문자로 이루어진 문자조합

 

  • 변수(Variable): 정보를 저장하기 위한 공간으로, 값을 변경하거나 참조할 수 있습니다.
  • 전처리기(Preprocessor): 소스 코드를 컴파일하기 전에 처리하는 단계로, #으로 시작하는 명령어를 사용하여 작업을 수행합니다.
  • 입출력 라이브러리 함수(Input/Output Library Functions): 사용자로부터 입력을 받거나, 결과를 출력하기 위해 제공되는 함수들입니다.
  • 연산자(Operator): 값을 조작하거나 비교하기 위해 사용되는 기호나 키워드입니다.
  • 제어문(Control Statements): 프로그램의 흐름을 제어하기 위해 사용되는 구문으로, 조건에 따라 실행 여부를 결정하거나 반복 작업을 수행할 수 있습니다.
  • 함수 선언(Function Declaration): 함수의 이름, 반환 값의 자료형, 매개 변수의 자료형 등을 명시하여 함수를 선언하는 것입니다.
  • 기억 클래스(Storage Classes): 변수의 수명과 범위를 제어하기 위해 사용되는 키워드로, 변수의 메모리 할당과 해제를 조절합니다.
  • 배열(Array): 동일한 자료형의 여러 값을 하나의 변수로 관리하는 데이터 구조입니다.
  • 구조체(Structure): 서로 다른 자료형의 데이터를 하나로 묶어서 관리하기 위해 사용되는 사용자 정의 자료형입니다.
  • 포인터(Pointer): 메모리 주소를 저장하는 변수로, 다른 변수의 주소를 가리키거나 동적 메모리 할당을 위해 사용됩니다.
  • call by address: 함수 호출 시, 인수로 변수의 주소를 전달하여 변수의 값이 직접 변경되도록 하는 방식입니다.

'C' 카테고리의 다른 글

6주차 수업내용  (0) 2024.04.09
5주차 실습과제2  (0) 2024.04.02
5주차 수업내용  (0) 2024.04.02
4주차 수업내용  (0) 2024.03.26
2주차 수업내용  (0) 2024.03.12