본문 바로가기

programming language/C 언어

(41)
열혈 ( C ) chapter 21 정리노트 1 chapter 21-1 콘솔 입출력을 위한 '입력 스트림'과 '출력 스트림'은 프로그램이 실행되면 자동으로 생성되고, 프로그램이 종료되면 자동으로 소멸되는 스트림이다. 즉, 이 둘은 '표준 스트림' 이라고 한다. stdin 표준 입력 스트림 키보드 대상으로 입력 stdout 표준 출력 스트림 모니터 대상으로 출력 stderr 표준 에러 스트림 모니터 대상으로 출력 스트림이란? 한 방향으로 흐르는 데이터 흐름을 뜻한다. 즉 단 방향으로만 데이터의 전송이 이뤄진다는 뜻이 담겨있다. 실제로 입력 스트림과 출력 스트림이 구분되어, 한 방향으로만 데이터의 흐름을 유지하고 있다. chapter 21-2 문자 출력 함수: putchar, fputc (모니터로 하나의 문자를 출력할 때..사용하는 두 함수) #inclu..
if문 이해 if문에서 if블록에 해당되는(if문에 영향을 받는)문장은 어디까지인가? #include int main(void) { int a; int sum = 0; int i = 1; scanf("%d", &a); for (i = 1; ; i++) { sum += i; if (sum >= a) printf("%d", i); break; } return 0; } 위 코드는 a값이 1이하이면, 정상적으로 출력이 되지만 1을 초과한 수가입력이 되게 되면, 정상적으로 출력이 되지않는다. if (sum >= a) printf("%d", i); break; 의 문장에서 if블록 내에 속하는 문장은 printf문 뿐이다. break문은 if문내에 속하지 않는다. 그래서 조건이 성립되지 않으면, 값을 출력하지 못하고 break..
열혈c프로그래밍 문제16-1번(2차원 배열 활용) #include int main(void) { int arr[5][5]; int i, j; int total = 0; for(i =0;i
열혈 c프로그래밍 문제 16-1번 (2차원 배열 활용) p349 그림(그림 생략)에서 제시하는 배열 A와 B를 보고, 배열 A는 선언과 동시에 초기화를 하고, 배열 B는 반드시 배열 A를 이용해 초기화를 진행해주어야 하는 문제이다. (오답) #include int main(void) { int arr[2][4] = { {1,2,3,4}, {5,6,7,8} }; int arr2[4][2]; int i, j; for (j = 0; j < 4; j++) { for (i = 0; i < 2; i++) { arr2[j][i] = arr[i][j]; } } for (j = 0; j < 4; j++) { for (i = 0; i < 2; i++) printf("%d", arr[j][i]); printf("\n"); } return 0; } 풀이 방식은 맞았으나, 마지막 ..
열혈 c프로그래밍 문제16-1번(2차원 배열 활용) 문제를 좀 잘못 읽고 푼 풀이인데, 출력의 결과로 2단 3단 4단이 나온다. #include int main(void) { int arr[3][9] = { {2,4,6,8,10,12,14,16,18}, {3,6,9,12,15,18,21,24,27}, {4,8,12,16,20,24,28,32,36} }; int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 9; j++) { printf(" %d x %d = %d \n", i + 2, j + 1, arr[i][j]); } printf("\n"); } return 0; } #include int main(void) { int arr[3][9]; int i, j; for(i = 0;i
오늘 공부한 다차원 배열(2차원 배열의 선언 방법) 그냥 제가 오늘 공부했던 예제 옮겨놓은 것입니다. #include int main(void) { int villa[4][2]; int popu, i, j; //가구별 거주인원 입력받기// for (i = 0; i < 4; i++) { for (j = 0; j < 2; j++) { printf("%d층 %d호 인구수: ", i + 1, j + 1); scanf("%d", &villa[i][j]); } } for (i = 0; i < 4; i++) { popu = 0; popu += villa[i][0]; popu += villa[i][1]; printf("%d층 인구수: %d\n", i + 1, popu); } return 0; } 참고: 2차원 배열도 메모리상에는 1차원의 형태로 존재한다 ---2차원 배..
열혈 c프로그래밍 문제 14-1번(p320) #include int squareByValue(int n) { return n * n; } void squarebyreference(int* ptr) { int num = *ptr; *ptr = num * num; } int main(void) { int num = 10; printf("%d\n", squareByValue(num)); squarebyreference(&num); printf("%d\n", num); return 0; } squarebyreference 함수 안의 변수 num은 squarebyreference함수의 지역변수 num이 아니라, main함수에 있는 num이다. 매개변수를 통해 num에 대한 주솟값을 받았기 때문에 가능한 것이다. squareByValue 함수는 값을 반환해달..
배열을 함수의 인자로 전달받기(p314) #include void showarray(int* param, int len) { int i; for (i = 0; i < len; i++) printf("%d", param[i]); printf("\n"); } void add(int* param, int len, int add) { int i; for (i = 0; i < len; i++) param[i] += add; } int main(void) { int arr[3] = { 1,2,3, }; add(arr, sizeof(arr) / sizeof(int), 1); showarray(arr, sizeof(arr) / sizeof(int)); add(arr, sizeof(arr) / sizeof(int), 2); showarray(arr, sizeo..