728x90

c언어 125

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 (8~11)

8. main()함수의 매개변수로 입력된 수 만큼의 "*"를 출력하는 프로그램. #include #include void print_char(char c, int n); int main(int argc, char *argv[]) { if(argc != 2){ printf("매개변수로 10진수 하나를 입력하세요 \n"); return 0; } for (int i = 0; argv[1][i] != '\0'; i++) { if (argv[1][i] '9') { printf("매개변수로 10진수 하나를 입력하세요 \n"); return 0; } } // 매개변수 유효성 검사. int n = atoi(argv[1]); for (int i = 0; i < n; i++) { p..

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) ① 가인수가 실인수가 기억된 주소를 전달받아 함수 내에서 실제 실인수를 조작하는 방식. ② 함수의 실인수는 주소로 넘겨줘야 하고, 가인수는 포인터로 받아야한다. ③ 함수내에서..

반응형