본문 바로가기

Study/C programming language

(21)
윤성우님의 C 프로그래밍 연습문제 : 18-2 문제1] #include int main() { int *arr1[5]; int *arr2[3][5]; int **parr1 = arr1; int *(*parr2)[5] = arr2; return 0; } 문제2] #include void fct1(int *arr1, int *arr2); void fct2(int (*arr3)[4], int (*arr4)[4]); int main(void) { int arr1[3]; int arr2[4]; int arr3[3][4]; int arr4[2][4]; fct1(arr1, arr2); fct2(arr3, arr4); return 0; } void fct1(int *arr1, int *arr2) { printf("%d\t%d\n", arr1, arr2); } vo..
윤성우님의 C 프로그래밍 연습문제 : 17-1 문제1] #include void maxmin(int *arr, int **max, int **min, int size); int main(void) { int arr[5]; int i, size; int *max, *min; printf("Input 5 Integer....\n"); for(i = 0; i < 5; i++) { printf("%dst : ", i+1); scanf("%d", &arr[i]); } size = sizeof(arr) / sizeof(int); maxmin(arr, &max, &min, size); printf("Max is : %d\t Min is : %d\n", *max, *min); return 0; } void maxmin(int *arr, int **max, int ..
윤성우님의 C 프로그래밍 연습문제 : 16-1 문제1] #include int main(void) { int multi[8][9]; int i, j; for(i = 0; i < 8; i++) { for(j = 0; j < 9; j++) { multi[i][j] = (i+2) * (j+1); printf("%d\t", multi[i][j]); } putchar('\n'); } return 0; } 문제2] #include int main(void) { int arr1[2][4], arr2[4][2]; int i, j; for(i = 0; i < 2; i++) { for(j = 0; j < 4; j++) { arr1[i][j] = (i*4) + (j+1); arr2[j][i] = arr1[i][j]; printf("%d\t", arr1[i][j]); }..
윤성우님의 C 프로그래밍 도전프로그래밍 TWO [5] (거품정렬) 도전5] #include #defineSIZE7 void Des_Sort(int* arr); void swap(int* a, int* b); int main(void) { int arr[SIZE]; int i; for(i = 0; i < SIZE; i++) { printf("Input %dst Number : \n", i+1); scanf("%d", &arr[i]); } Des_Sort(arr); for(i = 0; i < SIZE; i++) printf("%d\t", arr[i]); return 0; } void Des_Sort(int* arr) { int i, j; for(i = 0; i < SIZE - 1; i++) { for(j = 0; j < SIZE - 1 -i; j++) { if(*(arr+..
윤성우님의 C 프로그래밍 도전프로그래밍 TWO [3~4] 도전3] #include #defineMAX10 int main(void) { int arr[MAX]; int num, k, i = 0, j = 9; for(k = 0; k < MAX; k++) { printf("Input Number : "); scanf("%d", &num); if(num % 2 != 0) arr[i++] = num; else arr[j--] = num; } printf("------------------\n"); for(i = 0; i < MAX; i++) printf("%d\n", arr[i]); return 0; } 도전4] #include int flag; void palindrome(char* str, int size, int i); int main(void) { char s..
윤성우님의 C 프로그래밍 도전프로그래밍 TWO [1~2] 도전1] #include void odd_number(int* arr, int size); void even_number(int* arr, int size); int main(void) { int arr[10]; int i, size = sizeof(arr) / sizeof(int); for(i = 0; i < size; i++) { printf("Input %dst arr value : ", i+1); scanf("%d", &arr[i]); } odd_number(arr, size); even_number(arr, size); return 0; } void odd_number(int* arr, int size) { int i; printf("Odd Number : \n"); for(i = 0; i < ..
윤성우님의 C 프로그래밍 연습문제 : 14-1 문제1] - Call-By-Value #include int Square(int a); int main(void) { int a; printf("Input integer : "); scanf("%d", &a); a = Square(a); printf("%d", a); return 0; } int Square(int a) { return a*a; } - Call-By-Reference #include void Square(int* a); int main(void) { int a; printf("Input integer : "); scanf("%d", &a); Square(&a); printf("%d", a); return 0; } void Square(int* a) { *a = (*a) * (*a); } ..
C에서 배열이름의 정체는?? #include int main() { int a[2] = {1, 2}; printf("%d %d %d", a, &a[0], &a); return 0; } 위의 결과를 보면 3가지 값 모두가 똑같다. 배열이름은 배열의 첫번째 인덱스의 주소값을 가지니 a == &a[0]는 당연히 맞는 말이다. 하지만 a 라는 값(즉 배열의 주소가 저장되는 공간) 자체도 어딘가 메모리 공간에 할당될테고 (주소값을 저장하는 메모리공간 = 포인터) 다시 말해 &a 를 출력했을시 어딘가 다른 메모리 주소가 출력되야 하는데 그렇질 않다. 게다가 sizeof 연산을 해보면 배열이름의 저장 공간은 포인터 크기가 아닌 배열 전체의 크기가 나오는데 이걸 어떻게 이해해야 하는지 -_-;; 배열이름은 배열의 크기 정보까지 저장하고 있는 포인..