728x90

c언어 125

C언어 이론 11. 표준 라이브러리(정의~문자열 처리 함수)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 표준 라이브러리 함수 ① C언어 표준 규약에 의해서 모든 컴파일러가 기본적으로 제공하도록 약속되어 있는 함수들을 말한다. ② 표준 함수들의 선언은 표준 헤더파일에 있으므로 사용하기 위해서는 함수가 선언된 표준 헤더파일을 #include 해줘야한다. ③ 기본 함수의 정의는 라이브러리 파일에 있으며 링크 과정에서 연결된다. ④ 현재 가장 최신의 표준 규약은 C17이다. ⑤ 이런 표준 함수를 모두 외우는건 비효율적이며, 어떻게 쓰이는지를 알아뒀다가 필요할때마다 레퍼런스를 참조하여 사용하면 된다. ⑥ 아래는 주요한 함수들과 이를 포함하는 헤더파일이다. ⑦ 하나의 함수가 여러개의 헤더파일에 저장되어 ..

C언어 연습문제 풀이 CH10 (9-11)

9. 다음 주어진 프로그램을 전처리기가 처리한 후 결과가 어떻게 나올지 써보라. 의도한 것과 다르다면 소스를 고쳐라. #define SQR(x) ((x)*(x)) void main(void) { int i = 2; printf("%d\n", SQR(++i)) } //전처리기 처리 후 코드 #include #define SQR(x) ((x)*(x)) void main(void) { int i=2; printf("%d\n", SQR(++i)); //위의 코드는 printf("%d\n", (++i) * (++i)); //와 같다. 즉 3*4가 되어 12가 나온다. //매크로 함수에서는 증감연산자를 쓸 수 없다고 생각하는게 좋으니 i = 2; ++i; printf("%d\n", SQR(i)); //i값을 꼭 증..

C언어 연습문제 풀이 CH10 (6-8)

6. 입력받은 세 개의 정수 중 가장 큰 값을 구하는 프로그램을 매크로 MAX(A,B,C)를 이용하여 작성하라. #include #define MAX(a,b,c) (((a)>(b)) ? ((a) > (c) ? (a) : (c)) : ((b) > (c) ? (b) : (c))) int main() { int a, b, c; printf("a값을 입력하세요 : "); scanf_s("%d", &a); printf("b값을 입력하세요 : "); scanf_s("%d", &b); printf("c값을 입력하세요 : "); scanf_s("%d", &c); printf("입력하신 값 중에서 가장 큰 값은 %d입니다. \n", MAX(a, b, c)); } 7. 프로그램의 실행결과가 다음과 같이 되도록 매크로 pr..

C언어 연습문제 풀이 CH10 (1-5)

1. 매크로 정의를 이용하여 원의 둘레를 구하는 프로그램을 작성하라. #include #define PI 3.141592 #define circumference(r) 2*PI*r int main(void) { double r; printf("원의 반지름을 입력하세요 : "); scanf_s("%lf", &r); printf("반지름이 %g인 원의 둘레는 %g입니다 \n",r,circumference(r)); } 2. 매크로 정의를 이용하여 5의 세제곱의 값을 구하여 출력하는 프로그램을 작성하라. #include #define cube(r) r*r*r int main(void) { printf("5의 세제곱 : %d \n", cube(5)); } 3. 다음 프로그램에서 전처리기가 #define, #ifde..

4*(a)를 4(a)로 잘못 썼을 때 나왔던 에러

#define discriminant(a,b,c) (((b)*(b))-(4(a)*(c)))라는 매크로 함수를 double a = 1, b = 1, c=1;discriminant(a, b, c);이렇게 호출했는데 명백한 호출의 괄호 앞에 오는 식에는 함수 (포인터) 형식이 있어야 합니다.항은 1개의 인수를 받아들이는 함수로 계산되지 않습니다.이런 에러가 뜹니다. // 에러가 난 이유 자체는 간단하다. 4*(a)라고 써야할 식을 4(a)로 써서 그렇다.// 컴파일러가 4(a)를 함수 호출식으로 생각해서 에러를 보여줬다는 뜻이다.

에러 모음 2018.06.03

C언어 이론 10. 전처리기(연산자 #과 ##, #error, #line)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. #과 ## ① #과 ##은 #define 전처리문에서만 사용되는 특수한 연산자이다. ② C언어 자체의 연산자는 아니기에 우선순위나 결합규칙등은 적용되지 않는다. ③ #(strizing operator)는 #define문의 인수앞에 사용되어, 피연산자를 문자열로 바꿔준다. ④ #과 형식 인수 사이의 공백, 형식 인수 다음의 공백은 무시된다. ex) #define(#exp) == #define(# exp) == #define(#exp ) == #define(# exp ) ⑤ 실인수 내의 연속되는 공백은 하나만 인정된다. 실인수내에 있는 주석은 하나의 공백으로 치환된다. ⑥ 실인수 내에 확장열로 ..

C언어 이론 10. 전처리기(#include~#endif)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 전처리기(preprocessor) ① 원시코드가 컴파일되기 전에 C언어의 문법과는 독립적으로 실행시켜 매크로 문장이 있으면 정의된 문장으로 치환해주는 역할을 담당하는 것 ② 컴파일하기 전에 코드를 변경시켜주는 역할을 수행하기에 기계어로 번역되지는 않는다. ③ 전처리문은 #으로 시작하고, 다른 문장과는 달리 끝에 ;를 붙이지 않는다. ④ 전처리문은 한행에 하나씩 써야하고, 뒤에 주석을 제외한 다른 것이 올 수 없다. ⑤ 전처리기의 종류와 기본적인 역할은 다음과 같다. (일부분이다. 다음 포스트에서 나머지를 다룰예정이다.) 종류 기능 #include 지정파일을 원시 프로그램에 포함시킨다. #de..

C언어 연습문제 풀이 CH9 (15~19)

15. 복소수 곱셈을 수행하는 함수를 작성하라. 이때, complex에 대한 포인터를 반환하는 함수와 complex형의 값을 반환하는 두개의 함수를 각각 작성하라. #include #include //malloc(), free() 사용 struct complex { double real_number; //실수부 double imaginary_number; //허수부 }; complex cp_mult(complex c1, complex c2); complex* cp_mult_rp(complex c1, complex c2); int main() { complex c1, c2, c3; complex* cp; printf("복소수의 곱셈을 합니다. \n"); printf("첫번째 복소수의 실수부를 입력하세요 :..

C언어 연습문제 풀이 CH9 (6~14)

6. 백화점 신용카드 고객 중 "Johnson"의 정보를 출력하는 프로그램을 작성하라. #include #include struct Customer { int ID; char name[10]; char address[30]; char phone[15]; int price; }; int main() { Customer list[10]; list[0] = { 1234, "Johnson", "Taejon,Korea", "042-654-0987", 200000 }; printf("고 객 번 호 : %d \n", list[0].ID); printf(" 이 름 : %s \n", list[0].name); printf(" 주 소 : %s \n", list[0].address); printf("전 화 번 호 : %s ..

C언어 연습문제 풀이 CH9 (1~5)

1. 학생의 학번과 국어,영어,수학 점수를 저장할 수 있는 구조체를 만들고, 각 학생의 평균 점수를 출력하는 함수를 작성하라. #include struct score { int id; int korean; int eneglish; int math; }; double avr(score* sp); int main() { score student[5]; for (int i = 0; i < 5; i++) { printf("%d번째 학생의 학번을 입력하세요 :", i + 1); scanf_s("%d", &(student[i].id)); printf("%d번째 학생의 국어 점수를 입력하세요 : ", i+1); scanf_s("%d", &(student[i].korean)); printf("%d번째 학생의 영어 점수..

반응형