반응형
6. 입력받은 세 개의 정수 중 가장 큰 값을 구하는 프로그램을 매크로 MAX(A,B,C)를 이용하여 작성하라.
#include <stdio.h> #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. 프로그램의 실행결과가 다음과 같이 되도록 매크로 printexpr()를 정의하라.
int main() { printexpr(3 + 1); }
//실행 결과 expr = 4
#define printexpr(a) printf("expr:%d",a) int main() { printexpr(3 + 1); }
8. 주어진 스트링에서 대문자는 소문자로 소문자는 대문자로 바꾸는 프로그램을 다음에서 주어진 매크로를 이용해서 작성하라.
#define UPCASE(c) (( (c)>='a' && (c)<='z') ? (c)-('a'-'A') : (c) //소문자를 대문자로 바꾸는 매크로 함수
#define LOCASE(c) (( (c)>='A' && (c)<='Z') ? (c)+('a'-'A') : (c) //대문잘ㄹ 소문자로 바꾸는 매크로 함수
#include <stdio.h> #include <conio.h> #include <stdlib.h> #define UPCASE(c) ( ((c)>='a' && (c)<='z') ? (c)-('a'-'A') : (c)) //소문자를 대문자로 바꾸는 매크로 함수 #define LOCASE(c) ( ((c)>='A' && (c)<='Z') ? (c)+('a'-'A') : (c)) //대문자를 소문자로 바꾸는 매크로 함수 struct str { char d; str* next; }; str* trans_str(str* head); str* inputstr(void); void printstr(str* str); void destroy(str* head); int main() { str* start = inputstr(); printstr(start); start = trans_str(start); printstr(start); destroy(start); _getch(); } str* trans_str(str* string) { str* head = string; while (string->next != NULL) { if (string->d >= 'a' && string->d <= 'z') { string->d = UPCASE(string->d); } if (string->d >= 'a' && string->d <= 'z') { string->d = LOCASE(string->d); } string = string->next; } return head; } str* inputstr(void) { str* word = (str*)malloc(sizeof(str)); str* head = word; char temp; temp = _getche(); while (temp != 13) { //printf("확인용 \n"); str* nextchar = (str*)malloc(sizeof(str)); word->d = temp; word->next = nextchar; word = word->next; temp = _getche(); } word->next = NULL; return head; } void printstr(str* string) { while (string->next != NULL) { putchar(string->d); string = string->next; } printf("\n"); } void destroy(str* head) { str* dstr; while (head->next != NULL) { dstr = head; head = head->next; free(dstr); } dstr = head; head = head->next; free(head); }
반응형