728x90

분류 전체보기 518

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번째 학생의 영어 점수..

C언어 구조체 및 공용체 주요예제7 (이중 연결 리스트에서 특정 문자 삭제)

내용 출처 : YES C (정보공학연구소 /생능출판사) 이중 연결 리스트(doubly linked list) 에서 특정 문자 삭제하는 예제 // 이중 연결 리스트 예제 #include #include #include #include #define MAXLINE 100 typedef char DATA; struct ELEMENT { DATA d; ELEMENT *prev; ELEMENT *next; }; typedef ELEMENT* LINK; void concatenate(LINK a, LINK b); int count_it(LINK head); void delete_list(LINK head); LINK string_to_list(LINK p, char s[]); void wrt_list(LINK hp..

C언어 구조체 및 공용체 주요예제 6 (트리 오름차순 정렬 (미완성))

내용 출처 : YES C (정보공학연구소 /생능출판사) 데이터를 입력받아 트리에 저장한 후 출력한다.단 값이 입력될 때, root보다 작으면 왼쪽 노드에, 크면 오른쪽 노드에 저장한다.이렇게 저장한 후 중위순 운행을 하면 오름차순으로 정렬된 결과가 출력된다. //제대로 작동 안함. 다시 분석해야할 예제 #include #include #include #include #define LEFT 0 #define RIGHT 1 typedef int DATA; struct NODE { DATA d; NODE *left; NODE *right; }; typedef NODE* BTREE; BTREE add_node(BTREE parent, BTREE r_node, DATA d1, int r_1); BTREE new_..

반응형