728x90

프로그래밍 209

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..

C언어 연습문제 풀이 CH7 (1~8)

1~2. "Menu choices"를 인쇄하는 menu라는 함수를 작성하라. 이 함수의 원형은 void menu(void)이다. #include void menu(void); int main() { menu(); } void menu(void) { printf("Menu choices \n"); } 3~4. 인자로 문자열을 전달받아 그것을 출력하는 print라는 함수를 작성하라. 이 함수의 원형은 void print(char str[]); 이다. #include void print(char str[]); int main() { char str[] = "Hello World"; print(str); } void print(char str[]) { printf("%s\n",str); } 5~6. 정수 배열을..

C언어 함수 실습문제 풀이 CH7 (7)

7. 2진수를 main()함수의 매개변수를 받아들여, 10진수, 16진수, 8진수로 바꾸어 출력하는 프로그램을 작성하라. #include #include // pow() 사용 #include // atoi() 사용 //atoi() : 문자열을 int 데이터로 변환하는 함수. int main(int argc, char *argv[]) { int decimal = 0; int k = 0; if (argc != 2) { printf("2진수 매개변수 하나를 입력하세요 \n"); } for (int i = 0; argv[1][i] != '\0'; i++) { if (argv[1][i] '1') { printf("2진수 매개변수 하나를 입력하세요 \n"); } k++; } ..

C언어 함수 주요예제 5. (메인함수의 인수 관련 예제들)

기본 인자에 무슨 값이 들어있는 확인하는 예제 #include int main(int argc, char *argv[],char* env[]) { printf("argc = %d\n", argc); for (int i = 0; i < argc; i++) { printf("argv[%d] = %s\n", i, argv[i]); } for (int i = 0; en[i] != NULL; i++) { printf("env[%d] = %s\n", i, en[i]); } } //메인함수의 매개변수를 쓰는 코드가 다 쓸데 없어 보여서 그냥 이 예제들은 열심히 쳐보기로 함. 메인함수의 매개변수로 16진수를 받아 10진수로 변환시켜 출력하는 프로그램 #include #include //strlen(), _strupr_..

C언어 함수 주요예제 4. (재귀함수 예제들)

팩토리얼을 구하는 재귀함수 #include long factorial(long n); int main() { printf("7! = %d \n", factorial(7)); } long factorial(long n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } }//별 의미 없지만 재귀함수의 개념을 이해하기에는 가장 좋은 팩토리얼 함수. 스택의 원리를 이용하여 입력받은 문자열을 거꾸로 출력해주는 함수 #include void print_back(); int main() { printf("문자열을 입력하세요 : "); print_back(); printf("\n"); } //stack의 원리를 이용한 재귀함수 void print_b..

반응형