게임프로그래밍 개발 수업/C언어 수업
04.06 C언어 수업
막뇌
2023. 4. 6. 13:52
#include<stdio.h> //표준 입출력 장치 헤더
#include<stdlib.h> //라이브러리 헤더 파일, rand() srand() 할 때 사용, 동적 할당에서 사용
#include<string.h> //strlen 문자열 길이 strcpy_s strcat_s 등등에 대한 기능을 사용 할 수 있게 됨
#include<time.h> //랜덤값 출력시 srand(int)time.h(NULL) 사용 가능 time.h를 쓸 수 있다.
void bubble_sort_ascending(int arr[], int n);
void bubble_sort_descending(int arr[], int n);
int main()
{
//1차원 배열의 길이가 100인 배열을 선언한 다음 랜덤값을 배열에 저장한다. 1부터 100사이의 수 중에 하나로 배열에 저장한다.
//버블정렬로 오름차순 내림차순 각각 정렬 해 본다.
int arr[100];
srand((int)time(NULL));
for (int i = 0; i < 100; i++)
arr[i] = rand() % 100 + 1;
printf("Original Array: \n");
for (int i = 0; i < 100; i++)
printf("%d ", arr[i]);
printf("\n");
bubble_sort_ascending(arr, sizeof(arr) / sizeof(int));
printf("오름차순 정렬: ");
for (int i = 0; i < 100; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubble_sort_descending(arr, sizeof(arr) / sizeof(int));
printf("내림 차순 정렬: ");
for (int i = 0; i < 100; i++) {
printf("%d ", arr[i]);
}
return 0;
}
void bubble_sort_ascending(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void bubble_sort_descending(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int k = 0; k < n - 1 - i; k++) {
if (arr[k] < arr[k + 1]) {
int temp = arr[k];
arr[k] = arr[k + 1];
arr[k + 1] = temp;
}
}
}
}
#include<stdio.h> //표준 입출력 장치 헤더
#include<stdlib.h> //라이브러리 헤더 파일, rand() srand() 할 때 사용, 동적 할당에서 사용
#include<string.h> //strlen 문자열 길이 strcpy_s strcat_s 등등에 대한 기능을 사용 할 수 있게 됨
#include<time.h> //랜덤값 출력시 srand(int)time.h(NULL) 사용 가능 time.h를 쓸 수 있다.
const int BREAD = 500;
const int SNACK = 700;
const int DRINK = 400;
int main()
{
int maxmoney = 5000;
int currentmoney = 3500;
int i, j, k;
printf("당신이 소유하고 있는 금액 : %d \n", currentmoney);
for (i = 1; i < currentmoney / BREAD; i++) {
for (j = 1; j < currentmoney / SNACK; j++) {
for (k = 1; k < currentmoney / DRINK; k++) {
if (currentmoney == BREAD + SNACK * j + DRINK * k) {
printf("크림빵 %d개 \n", i);
printf("새우깡 %d개 \n", j);
printf("콜 라 %d개 \n", k);
printf("\n");
}
}
}
}
return 0;
}
두 수를 입력받아 두수의 최대공약수를 구하는 프로그램을 만들어 보자
#include<stdio.h> //표준 입출력 장치 헤더
#include<stdlib.h> //라이브러리 헤더 파일, rand() srand() 할 때 사용, 동적 할당에서 사용
#include<string.h> //strlen 문자열 길이 strcpy_s strcat_s 등등에 대한 기능을 사용 할 수 있게 됨
#include<time.h> //랜덤값 출력시 srand(int)time.h(NULL) 사용 가능 time.h를 쓸 수 있다.
int GCM(int num1, int num2);
int main()
{
int input1, input2;
printf("두개의 정수를 입력: ");
scanf_s("%d %d", &input1, &input2);
printf("GCN : %d \n", GCM(input1, input2));
return 0;
}
int GCM(int num1, int num2) {
int result;
result = num1;
while (num1 % result != 0 || num2 % result != 0)
result--;
return result;
}
십진수를 이진수로 변환 해서 표현하는 프로그램을 만들어 보세요.
#include<stdio.h> //표준 입출력 장치 헤더
#include<stdlib.h> //라이브러리 헤더 파일, rand() srand() 할 때 사용, 동적 할당에서 사용
#include<string.h> //strlen 문자열 길이 strcpy_s strcat_s 등등에 대한 기능을 사용 할 수 있게 됨
#include<time.h> //랜덤값 출력시 srand(int)time.h(null) 사용 가능 time.h를 쓸 수 있다.
int main() {
int input;
char arr[30];
int cnt = 0;
int i = 0;
printf("십진수를 입력하세요: ");
scanf_s("%d", &input);
while (input > 0) //2진수로 변환하는 과정 2로 나눈 나머지를 각 배열에 담고난 다음, 값을 2로 나눈다.
{
arr[cnt] = input % 2;
input /= 2; //정수형은 몫이 1미만이 되면 그때 부터는 0으로 처리한다.
cnt++;
}
cnt--;// 한번 빼줘야 cnt가 0부터 생성된 마지막 배열까지 누적 됨
printf("변환된 이진수: ");
while (cnt >= 0) //역순으로 출력하기 위해 배열 arr[cnt]를 arr[0]까지 출력함
{
printf("%d ", arr[cnt]);
cnt--; //최종적으로 cnt값은 -1이 되면서 while문을 탈출
}
return 0;
}
1번 답
2번 답
void SimpleFuncOne(int* ar1, int* ar2);
void SimpleFuncOne(int ar1[], int ar2[]);
void SimpleFuncTwo(int(*ar3)[4], int(*ar3));
void SimpleFuncTwo(int ar3[][4], int ar4[][]);
int main(void)
{
int arr1[3];
int arr2[4];
int arr3[3][4];
SimpleFuncOne(arr1, arr2);
SimpleFunTwo(arr3, arr4);
return0;
문제3번 답
int main() {
int* arr1[3] ---> int** ptr1
int* arr2[3][5] ---> int* (*ptr2)[5] //int ptr[][4]
int** arr3[5] ---- > int*** ptr3
int*** arr[3][4] ---> int*** (*ptr4)[5]