728x90
728x170
쉽게 풀어 쓴 C언어 Express 15장 프로그래밍 문제 해설
쉽게 풀어 쓴 C언어 Express 15장 프로그래밍 문제 해설
1.
double power(int x, int y) {
double result = 1.0;
int i;
for (i = 0;i < y; i++) {
printf("result=%f\n", result);
//①
result *= x;
}
return result;
}
(a)
#ifdef DEBUG
printf("result=%f\n", result);
//①
#endif
(b)
#if DEBUG==2
printf("result=%f\n", result);
//①
#endif
(c)
#if (DEBUG==2 && LEVEL==3)
printf("result=%f\n", result);
//①
#endif
(d)
printf("%d: result=%f\n", __LINE__, result);
//①
(e)
#if POWER_TYPE==0
int power(int x, int y) {
int result = 1.0;
# else
double power(int x, int y) {
double result = 1.0;
#endif
... #if POWER_TYPE==0
printf("result=%d\n", result);
//①
# else
printf("result=%f\n", result);
//①
#endif
...
(f)
#if 0
printf("result=%f\n", result);
//①
# else
2.
#include <stdio.h>
#define MIN(x,y) (x)<(y)?(x):(y)
#define GET_MIN(x,y,z) (MIN(x, y))<(z)?(MIN(x, y)):(z)
int main(void) {
int x, y, z, result;
printf("3개의 정수를 입력하시오: ");
scanf("%d %d %d", &x, &y, &z);
result = GET_MIN(x, y, z);
printf("최소값은 %d입니다. ", result);
return 0;
}
3.
#define ARRAY_INIT(array, size, value) {
int i;
for (i=0;i<size;i++)\
array[i]=(value);
}
int main(void) {
int a[10];
ARRAY_INIT(a, 10, 0);
return 0;
}
4.
#include <stdio.h>
#define VOLUME(r, h) (3.141592*r*r*h)
int main(void) {
double r, h, volume;
printf("원기둥의 반지름을 입력하시오: ");
scanf("%lf", &r);
printf("원기둥의 높이를 입력하시오: ");
scanf("%lf", &h);
volume = VOLUME(r, h);
printf("원기둥의 부피: %f ", volume);
return 0;
}
5.
#include <stdio.h>
#define IS_SPACE(c) ((c)==' ' || (c)=='\t' || (c)=='\n')
int main(void) {
char str[100];
int i, count;
printf("문자열을 입력하시오: ");
gets(str);
i=0;
count=0;
while( str[i] != NULL ) {
if( IS_SPACE(str[i]) )
count++;
i++;
}
printf("공백문자의 개수: %d \n", count);
return 0;
}
6.
#include <stdio.h>
#define SET_BIT(n, pos) ((n) |= (1 << (pos)))
#define GET_BIT(n, pos) ((n) & (1 << (pos)))
#define CLR_BIT(n, pos) ((n) &= (~(1) << (pos)))
int main(void) {
int n;
n = 0x808081;
printf("GET_BIT(): %d \n", GET_BIT(n, 0));
SET_BIT(n, 2);
printf("%#x \n", n);
return 0;
}
7.
for (i=0;i<32;i++)
if( GET_BIT(n, i) )
printf("1"); else
printf("0");
->
for (i=31;i>=0;i--)
if( GET_BIT(n, i) )
printf("1"); else
printf("0");
#include <stdio.h>
#define GET_BIT(n, pos) ((n) & (1 << (pos)))
void display_bit(int value) {
int i;
for (i=31;i>=0;i--)
if( GET_BIT(value, i) )
printf("1"); else
printf("0");
printf("\n");
}
int main(void) {
int n, orientation, distance;
printf("정수값을 입력하시오: ");
scanf("%d", &n);
display_bit(n);
return 0;
}
8.
#include <stdio.h>
#define GET_BIT(n, pos) ((n) & (1 << (pos)))
void display_bit(int value) {
int i;
for (i=31;i>=0;i--)
if( GET_BIT(value, i) )
printf("1"); else
printf("0");
printf("\n");
}
int main(void) {
int n, orientation, distance;
printf("정수값을 입력하시오: ");
scanf("%d", &n);
printf("왼쪽 이동은 0, 오른쪽 이동은 1을 입력하시오: ");
scanf("%d", &orientation);
printf("이동시킬 거리: ");
scanf("%d", &distance);
printf("이동 전: ");
display_bit(n) ;
printf("이동 후: ");
if( orientation == 0 )
display_bit(n << distance); else
display_bit(n >> distance);
}
9.
#include <stdio.h>
int main(void) {
char s[100];
int i;
printf("문자열을 입력하시오: ");
scanf("%s", s);
for (i=0;i<strlen(s);i++) {
s[i] = s[i] ^ 0x20;
}
printf("결과 문자열: %s\n", s);
return 0;
}
10.
#include <stdio.h>
void encode(char *src, char *key, char *result);
void decode(char *src, char *key, char *result);
void main(void) {
char *key = "12345678";
char *data = "I am a boy";
char result1[100];
char result2[100];
encode(data, key, result1);
printf("%s가 %s로 엔코딩됨\n", data, result1);
decode(result1, key, result2);
printf("%s가 %s로 디코딩됨\n", result1, result2);
}
void encode(char *src, char *key, char *result) {
while(*src) *result++ = *src++ ^ *key++;
*result = '\0';
}
void decode(char *src, char *key, char *result) {
encode(src, key, result);
}
I am a boy가 xRY W Zoy로 엔코딩됨
xRY W Zoy가 I am a boy로 디코딩됨
계속하려면 아무 키나 누르십시오 . . .
728x90
그리드형
'IT > 프로그래밍' 카테고리의 다른 글
쉽게 풀어 쓴 C언어 Express 17장 프로그래밍 문제 해설 (0) | 2020.12.10 |
---|---|
쉽게 풀어 쓴 C언어 Express 16장 프로그래밍 문제 해설 (0) | 2020.12.10 |
쉽게 풀어 쓴 C언어 Express 14장 프로그래밍 문제 해설 (0) | 2020.12.10 |
쉽게 풀어 쓴 C언어 Express 13장 프로그래밍 문제 해설 (0) | 2020.12.10 |
쉽게 풀어 쓴 C언어 Express 12장 프로그래밍 문제 해설 (0) | 2020.12.10 |
댓글