728x90

분류 전체보기 518

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

C언어 함수 실습문제 풀이 CH7 (5,6)

Call by Refelence 형식을 사용한 함수. #include void ball(double r, double* c_area, double* s_area, double* volume); int main() { double radius, c_area, s_area, volume; printf("반지름을 입력해주세요 : "); scanf_s("%lf", &radius); ball(radius, &c_area, &s_area, &volume); printf("원의 면적 = %.2lf \n", c_area); printf("구의 면적 = %.6lf \n", s_area); printf("구의 부피 = %.6lf \n", volume); } void ball(double r, double* c_area, ..

VS2017의 C++환경에서는 문자열을 문자형 포인터로 받을 수 없다. (해결방법 추가)

//제목처럼 말해도 되는지 정확히는 모르겠다. #include void strdsp1(char* pt); void strdsp2(char str[]); int main() { char s1[] = "배열 형태의 문자열"; char* s2 = "abcd"; strdsp1(s1); strdsp2(s2); } void strdsp1(char* pt) { printf("%s \n", pt); } void strdsp2(char str[]) { printf("%s \n", str); }//C환경에서는 가능하지만 C++환경에서는 안되는 예제. 이런식으로 문자열 처리하는건 그냥 넘어가도록 하자. // 문자열은 const char이므로 const char*로 받으면 된다.

에러 모음 2018.05.18

C언어 함수 실습문제 풀이 CH7 (3,4) (구의 부피와 겉넓이, 헤론의 공식)

구의 부피와 겉넓이를 구하는 함수 (구의 부피는, 구의 겉넓이는 ) #include #include #define PI 3.14 double ball_volume(float r); double ball_surface(float r); double ball_volume_to_surface(double r); int main() { float r; printf("구의 반지름을 입력하세요 : "); scanf_s("%f", &r); printf("반지름이 %.2f일 때 구의 부피는 %.2f 입니다.\n", r, ball_volume(r)); printf("반지름이 %.2f일 때 구의 겉넓이는 %.2f 입니다. \n", r, ball_surface(r)); printf("부피가 %.2f일 때, 겉넓이는 %.2f..

C언어 이론 7. 함수 (재귀함수와 main함수)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 재귀함수 (recurcive function) ① 함수 내에서 자기 자신을 호출하는 함수. ② 재귀 함수는 함수 내에서 사용하는 변수가 지역변수여야 하고, 값에 의한 전달 방식을 사용해야한다. ③ 재귀 호출은 지역 변수를 사용하므로 저장영역으로 스택을 사용하고 호출되어진 횟수만큼 기억장소가 배정되므로 스택 오버플로우를 주의해야한다. ④ 재귀 호출은 다른 방식에 비해 처리속도가 느리고, 기억장소를 많이 사용하기 때문에 자주 쓸 기법은 아니다. ⑤ 정렬 트리나 리스트 등의 자료구조를 다룰 때 주로 사용한다. Ⅱ. main() 함수의 원형 ① 메인함수의 가장 완전한 원형은 void(또는 int) ..

C언어 이론 7. 함수 (함수간의 데이터 전달)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 값을 주고받는 방식 (call by value) ① 실인수와 가인수가 별도의 기억 장소를 갖고 함수가 호출되면 실인수의 값을 가인수에 복사해서 사용하는 방식 ② 데이터 전달이 끝나면 실인수와 가인수간의 상호작용은 없으며 서로 독립적인 값을 갖는다. ③ 값을 주고 받는 방식으로는 실인수의 값을 직접 건드릴 수 없으므로 함수에서 가인수의 값을 리턴해줘야만 한다. Ⅱ. 주소를 주고받는 방식 (call by reference) ① 가인수가 실인수가 기억된 주소를 전달받아 함수 내에서 실제 실인수를 조작하는 방식. ② 함수의 실인수는 주소로 넘겨줘야 하고, 가인수는 포인터로 받아야한다. ③ 함수내에서..

c언어 함수 주요예제 3. (유클리드 호제법)

유클리드 호제법을 이용하여 최대공약수를 구하는 함수. #include int gcd(int a, int b); int main(void) { int i, k; printf("최대 공약수를 구할 수를 입력받습니다. \n"); printf("첫번째 수를 입력하세요 : "); scanf_s("%d", &i); printf("두번째 수를 입력하세요 : "); scanf_s("%d", &k); printf("%d와 %d의 최대공약수는 %d입니다.", i, k, gcd(i, k)); } //유클리드 호제법을 이용해서 최대공약수를 계산하는 함수 int gcd(int a, int b) { int abs_a = (a > 0) ? a : -a; int abs_b = (b > 0) ? b : -b; //gcd(0,0) = ..

C언어 이론 7. 함수 (변수의 범위)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) 기억 부류 (Storage Class)명칭 기억지정자 선언위치 해제시기 기억장소 통용범위 자동 초기화 지역 변수(또는 자동 변수) 없음(또는 auto) 블럭 내부 블럭 종료시 스택 선언된 블럭 내 되지 않음 전역 변수 없음 모든 블럭 외부 프로그램 종료시 정적 영역 프로그램 전체 0으로 초기화 정적 변수 static 함수 내부 프로그램 종료시 정적 영역 함수 내부 0으로 초기화 함수 외부 선언된 모듈 내에서만 사용가능한 전역변수화. 외부 모듈에서 extern 지정자로 참조할 수 없다. 외부 변수extern 모든 블럭 외부 모듈 외부에서 선언된 전역변수를 참조하고자 할 때 extern 지정자를 사용..

반응형