728x90

c언어 125

C언어 연습문제 풀이 CH8 (18 ~ 22)

18. 다음 프로그램의 결과를 분석하라. #include int main() { int i[3] = { 100, 200, 300 }; int *iptr1, *iptr2; printf(" 1) i[0] = %5d; &i1 = %5u \n", i[0], &i[0]); printf(" 2) i[1] = %5d; &i2 = %5u \n", i[1], &i[1]); printf(" 3) i[2] = %5d; &i3 = %5u \n\n", i[2], &i[2]); iptr1 = &i[1]; printf(" 4) iptr1 = %5u; *iptr1 = %5u \n\n", iptr1, *iptr1); iptr1 += 1; printf("Adding 1 to POINTER varibale \n"); printf(" 5)..

C언어 연습문제 풀이 CH8 (16~17)

16. 문자열을 이용하여 이진수 덧셈을 하는 프로그램을 작성하라. 이진수는 80자리까지 입력 가능하다고 가정하라. #include #include #include char* binaryAdd (char* b1, char* b2); int main() { char b1[80]; char b2[80]; int ok = 1; do { printf("첫번째 2진수를 입력하세요 :"); scanf_s("%s", b1, 80); while (getchar() != '\n') {} for (int i = 0; b1[i] != '\0'; i++) { if (!(b1[i] == '0' || b1[i] == '1')) { ok = 1; break; } else { ok = 0; } } } while (ok); do { p..

C언어 연습문제 풀이 CH8 (12~15)

12. 다음 프로그램의 결과를 분석하라. #include int main() { int *ip1, *ip2; double *dp1, *dp2; int i1 = 1, i2 = 2; double d1 = 11.111, d2 = 22.222; ip1 = &i1; ip2 = ip1; dp1 = &d1; dp2 = dp1; printf("%8s %8s %8s %8s\n", " &ip1", " ip1", " &i1", " i1"); printf("%8u %8u %8u %8d\n\n", &ip1, ip1, &i1, i1); printf("%8s %8s %8s %8s\n", " &ip2", " ip2", " &i2", " i2"); printf("%8u %8u %8u %8d\n\n", &ip2, ip2, &i2, i2..

C언어 연습문제 풀이 CH8 (1 ~ 11)

1. 배열 arr에 {1,3,5,7,9}를 대입하고, 배열요소의 총합을 구하는 프로그램을 포인터를 이용해서 작성하라. #include int main() { int arr[5] = { 1,3,5,7,9 }; int* iptr = arr; int num = sizeof(arr) / sizeof(arr[0]); int sum = 0; for (int i = 0; i < num; i++) { printf("%d", *iptr); sum += *iptr++; if (i != num) { printf(" + "); } else { printf(" = "); } } printf("%d\n", sum); } 2. 2차원 배열 matrix[5][5]를 선언하고 포인터변수를 이용하여 모든 요소를 0으로 초기화하고... ..

C언어 포인터 주요 예제

임의의 문자열을 입력받고, 거꾸로 출력하는 프로그램. #include #include int main() { char buffer[80]; char *p = buffer; // char형 포인터 p에 char형 배열 buffer의 시작 위치를 대입 int len; printf("Input String : "); scanf_s("%s", buffer,80); len = strlen(p); // 시작위치부터 NULL문자가 나올때까지의 값을 리턴함. while (*p) { //*p의 값이 문자일 경우 0이 아닌 값으므로 참이고, NULL일경우 0으로 거짓이 되므로 while문을 빠져나간다. p++; //p가 가리키는 위치를 마지막으로 보낸다. } printf("Inverse String : "); for (i..

C언어 이론 8. 포인터 (배열과 포인터)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 배열과 포인터 ① 임의의 자료형 T가 있으면 T형 배열도 T형 포인터도 언제나 선언할 수 있다. ② C언어 내부적으로는 모든 배열은 메모리에 순차적으로 저장된다. ③ 즉, n차원 배열도 내부적으로는 배열의 배열로 메모리에는 순차적으로 저장되어 있다. ④ 배열의 이름은 배열의 시작 위치를 가리키는 포인터 상수이다. ⑤ 정수 포인터에서 1을 더하면 현재 가리키고 있는 주소에서 정수 사이즈만큼 이동한 곳을 가리킨다. ⑥ 포인터들의 배열도, 배열의 포인터도 가능하다. (①에 의해서) ⑦ n차원 배열에서도 포인트의 가감연산만으로 배열의 모든 요소를 참조할 수 있다. (② ~ ⑤에 의해서) Ⅱ. [ ]..

C언어 이론 8. 포인터 (void포인터와 NULL포인터, 함수 포인터)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. void* vp; ① void형은 함수의 리턴타입이 없을때 혹은 포인터에만 사용할 수 있는 특수한 타입이다. ② void* vp;의 형태로 void형 포인터를 선언할 수 있다. ③ void* vp;는 대상체가 정해져 있지 않다는 뜻으로 어떤 타입이든 가리킬수 있다. ④ void* vp;는 어떤 타입의 주소든 저장할 수 있다. ex) int i; char c; void* vp; vp = &i; vp = &c; ⑤ 하지만 반대로 임의의 T형 포인터 T* tp에 void* vp는 대입할 수 없다. ⑥ int* ip;에 void* vp;를 대입하려 한다면 (int *)vp;로 캐스팅을 해야한다. e..

C언어 이론 8. 포인터 (포인터의 정의와 연산)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. T형 포인터의 정의 ① T형 포인터는 'T형 변수가 저장된 메모리의 시작 주소를 저장하는 자료형'이다. ② 임의의 T형 변수가 있다면 언제나 T형 포인터 변수도 선언할 수 있다. ③ T형 포인터 Tp를 선언하는 문법은 예시와 같다. ex) ⑴ T* tp, ⑵ T *tp, ⑶ T * tp, ⑷ T*tp ④ ⑴은 T* 자체가 하나의 자료형이라는 관점에서 주로 쓰고, ⑵는 *tp가 포인터형 변수임을 강조할 때 주로 쓴다. ⑤ 하지만 T* tp1, tp2 로 쓴다면 tp1은 T형 포인터 변수로 선언되지만, tp2는 그냥 T형 변수로 선언된다. ⑥ 즉, 컴파일러가 T*를 하나의 자료형으로 해석하지는 ..

C언어 연습문제 풀이 CH7 (13~24)

13. 화씨->섭씨, 섭씨->화씨로 바꾸는 함수를 각각 작성하라. #include double FtoC(double F); double CtoF(double C); int main() { char CF; double temperature; do { printf("입력할 온도가 섭씨면 C, 화씨면 F를 입력하세요 : "); scanf_s("%c", &CF, sizeof(char)); while (getchar() != '\n') {} if ('a' ∞lim​(1+1/n)n=n−>0lim​(1+n)n1​ //잘 모르니까 공부하는걸로... 15. 다음은 라이프니치의 pi를 구하는 공식이다. 이를 함수로 작성하라. (1000항까지 계산) #include double LeibnizPi(void); int main..

C언어 연습문제 풀이 CH7 (9~12)

9. 7명의 심판에게 점수를 입력받고, 최고점과 최저점을 뺀 점수의 평균을 구하는 프로그램을 작성하라. #include #include int sum(int sc[], int N); int max(int sc[], int N); int min(int sc[], int N); int main() { int score[7]; int N = sizeof(score) / sizeof(int); for (int i = 0; i < N; i++) { printf("%d번째 심판의 점수를 입력하세요 : ", i + 1); scanf_s("%d", &score[i]); } printf("최종 점수는 최고점 %d점과 최하점 %d점을 뺀 총점 %d점의 평균인 %.2lf점 입니다. \n", max(score, N), min..

반응형