" async="async"> ', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); 책 알려주는 남자 :: '프로그래밍/쉽게 풀어쓴 C언어 Express' 카테고리의 글 목록 (3 Page)

 6장 Programming

1.

#include <stdio.h>


int main(void)

{

char ch;

printf("문자를 입력하시오: ");

scanf("%c", &ch);

switch(ch)

{

case 'a': 

case 'e': 

case 'o': 

case 'i': 

case 'u': printf("모음입니다\n"); break;

default: printf("자음입니다\n"); break; 

}

return 0;

}

2.

#include <stdio.h>


int main(void)

{

int x,y;

printf("정수를 입력하시오: ");

scanf("%d", &x);

printf("정수를 입력하시오: ");

scanf("%d", &y); 

if( x%y==0)

printf("약수입니다");

else

printf("약수가 아닙니다");

 

return 0;

}

3.

#include <stdio.h>


int main(void)

{

int x, y, z;

printf("3개의 정수를 입력하시오:");

scanf("%d %d %d", &x, &y, &z);

if(x>y)

if(x>z)

printf("%d", x);

else 

printf("%d", z);

else if (y>z)

printf("%d", y);

else 

printf("%d", z);

return 0;

}

4.

#include <stdio.h>
#include <time.h>
int main(void)
{
int user, com;
srand((int)time(NULL));
printf("선택하시오 (1:가위 2: 바위 3: 보)");
scanf("%d", &user);
com = rand() % 3 + 1;
if(user == 1)
{
if (com == 1)
printf("비겼음");
else if (com ==2)
printf("컴퓨터는 바위를 선택함. 컴퓨터 승");
else 
printf("컴퓨터는 보를 선택함. 사용자 승");
}
if(user == 2)
{
if (com == 1)
printf("컴퓨터는 바위를 선택함. 사용자 승");
else if (com ==2)
printf("비겼음");
else 
printf("컴퓨터는 보를 선택함. 컴퓨터 승");
}
if(user == 3)
{
if (com == 1)
printf("컴퓨터는 가위를 선택함. 컴퓨터 승");
else if (com ==2)
printf("컴퓨터는 바위를 선택함. 사용자 승");
else 
printf("비겼음");
}
return 0;
}

5.

#include <stdio.h>

int main(void)
{
int x, y;
printf("키를 입력하시오: ");
scanf("%d", &x);
printf("나이를 입력하시오: ");
scanf("%d", &y);
if (x>=140 && y>=10)
printf("타도 좋습니다");
else
printf("죄송합니다");
 
return 0;
}

6.

#include <stdio.h>

int main(void)
{
int x;
printf("월 번호를 입력하시오(1-12): ");
scanf("%d", &x);
switch(x)
{
case 1: printf("Jan"); break;
case 2: printf("Feb"); break;
case 3: printf("Mar"); break;
case 4: printf("Apr"); break;
case 5: printf("May"); break;
case 6: printf("Jun"); break;
case 7: printf("Jul"); break;
case 8: printf("Aug"); break;
case 9: printf("Sep"); break;
case 10: printf("Oct"); break;
case 11: printf("Nov"); break;
case 12: printf("Dec"); break;
}
return 0;
}

7.

#include <stdio.h>

int main(void)
{
int h, w, x;
printf("체중과 키를 입력하시오(키, 체중): ");
scanf("%d %d", &h, &w);
x = (h-100)*0.9;
if(w>x)
printf("과체중입니다");
else if (w=x)
printf("평균입니다");
else
printf("저체중입니다");
 
return 0;
}

8.

#include <stdio.h>

int main(void)
{
int x, y;
printf("현재 시간과 나이를 입력하시오(시간, 나이): ");
scanf("%d %d", &x, &y);
if (x < 17)
{
if (y > 12 && y < 65)
printf("요금은 34000원입니다.");
else
printf("요금은 25000원입니다.");
}
else
printf("요금은 10000원입니다.");
return 0;

}

9.

#include <stdio.h>

int main(void)
{
double x, y;
printf("x의 값을 입력하시오: ");
scanf("%lf", &x);
if (x <= 0)
{
y=x*x*x*-9*x+2;
printf("f(x)의 값은 %lf", y);
}
else if (x>0)
{
y=7*x+2;
printf("f(x)의 값은 %lf", y);
}
else
printf("잘못 입력하셨습니다."); 

return 0;

}

10.

#include <stdio.h>

int main(void)
{
double x,y;
printf("x,y의 값을 입력하시오: ");
scanf("%lf %lf", &x, &y);
if (x>0 && y>0)
printf("1사분면");
else if (x>0 && y<0)
printf("2사분면");
else if (x<0 && y<0)
printf("3사분면");
else if (x<0 && y>0)
printf("4사분면");
else if (x==0 && y!=0)
printf("y좌표");
else if (x!=0 && y==0)
printf("x좌표");
else if (x==0 && y==0)
printf("원점");
else
printf("잘못 입력하셨습니다.");
return 0;

}

11.

#include <stdio.h>

int main(void)
{
char x;
printf("문자를 입력하시오 : ");
scanf("%c", &x);
if (x=='R')
printf("Rectangle");
else if (x=='T')
printf("Triangle");
else if (x=='C')
printf("Circle");
else
printf("Unknown");
return 0;

}


또는

#include <stdio.h>

int main(void)
{
char x;
printf("문자를 입력하시오 : ");
scanf("%c", &x);
switch(x)
{
case 'R': printf("Rectangle"); break;
case 'T': printf("Triangle"); break;
case 'C': printf("Circle"); break;
defalut: printf("Unknown"); break;
}

  return 0;

}


블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,

6장 Exercise

1. ② 

!()는 참이면 1을, 거짓이면 0을 산출한다.

2. ①

거짓 && 참 = 거짓(0)

3. ②

4. 

(a) if( speed >= 60 && speed =< 100) printf("정상속도");

(b) 

if(x>y) 

{
max =x;
min =y;

else
{
max =y;
min =x;

(c)

if(op==1)
one;

else if (op ==2)
two;

else if (op==3)
threee;

또는 switch 사용

switch(op)
{
case 1 : printf("one"\n); break;
case 2 : printf("two"\n); break;
case 3 : printf("three"\n); break;
defalut
}

5.

(a)

switch(x)
{
case -1 : printf("num--"); break;
case 1 : printf("num++); break;
case 0 : printf("num=0"); break;
defalut
}

(b)

if(code='X')
x++;

else if(code='Y')
y++;

else 
x=y=0;

6.

(a)

if(x>10 && x<20)
printf("%d\n", x);

(b)

if(x>10 || x<20)
printf("%d\n", x);

7.     (a) 0    (b) C

8.     

(a) if절에 ;qnxdlaus dksehla 

(b) if(age>=0 && age =<18) 로 수정

(c) x == 0 으로 수정, else 관련 문구 추가해야함

(d) 순서를 120과 150을 바꿔야함

(e) 함수가 2개 이상일 경우 {} 중괄호가 필요함

(f) x>0 아닐 때에 대한 문구가 필요하다, y가 양수가 아님으로 수정

(g) | 대신 && 로 수정, else 관련 문구 추가해야함

(h) case 에는 정수형이 들어가야함, case 3 : printf("tiger"); break; 로 수정

블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,

5장 Programming


1.

#include <stdio.h>


int main(void)

{

int x, y;

printf("2개의 정수를 입력하시오 : ");

scanf("%d %d", &x, &y);

printf("몫: %d    나머지: %d", x/y, x%y);

return 0; 

}


2.

#include <stdio.h>


int main(void)

{

double x, y;

printf("2개의 실수를 입력하시오 : ");

scanf("%lf %lf", &x, &y);

printf("%lf  %lf  %lf  %lf \n", x+y, x-y, x*y, x/y);

return 0; 

}


3.

#include <stdio.h>


int main(void)

{

int x, y, z, a, b;

printf("3개의 정수를 입력하시오 : ");

scanf("%d %d %d", &x, &y, &z);

a = x>y ? x:y;

b = y>z ? y:z;

printf("최대값 : %d",  a>b ? a:b);

return 0; 

}


4.


#include <stdio.h>


int main(void)

{

int x, z;

double y, a;


printf("키를 입력하시오 : ");

scanf("%d", &x); 

y = (x/2.54);

z = (x/2.54) / 12;

a = (x/2.54) - z*12 ;

printf("%d cm는 %d 피트  %lf 인치입니다", x, z, a);


return 0;

 } 


5.

#include <stdio.h>


int main(void)

{

int x, y, z ;

printf("정수를 입력하시오 : ");

scanf("%d", &x);

y = x/10;

z = x%10;

printf("십의 자리 : %d\n일의 자리 : %d \n", y, z);

return 0;

}


6.

#include <stdio.h>


int main(void)

{

int x;

printf("정수를 입력하시오 : ");

scanf("%d", &x);

printf("2의 보수 : %d", ~x+1);

return 0; 

}


7.

#include <stdio.h>

 int main(void)

 {

  int x, y, z;

 

  printf("정수를 입력하시오 :");

  scanf("%d", &x);

 

  printf("2를 곱하고 싶은 횟수 : ");

  scanf("%d", &y);

 

z = x<<y;

printf("%d << %d의 값 : %d", x, y, z);

return 0;

}


8.

#include <stdio.h>

#define PI 3.14

int main(void)

{

float r, a, v;

printf("구의 반지름을 입력하시오 : ");

scanf("%f", &r);

a = 4*PI*r*r;

v = 4*PI*r*r*r/3;

printf("구의 표면전 : %f \n구의 체적 : %f\n", a, v);

return 0;

 

}


9.

#include <stdio.h>


int main(void)

{

float a, b, c, x;

printf("AC, AE, AB의 길이를 차례대로 입력하시오 : ");

scanf("%f %f %f", &a, &b, &c);

x = b*c/a;

printf("DE의 길이는 %f 이다.", x);

return 0; 

}

10.

#include <stdio.h>


int main(void)

{

int x, y;

printf("x좌표와 y좌표를 차례대로 입력하시오 : ");

scanf("%d %d", &x, &y);

x>0 && y>0 ? printf("1사분면") : printf("");

x>0 && y<0 ? printf("2사분면") : printf("");

x<0 && y<0 ? printf("3사분면") : printf("");

x<0 && y>0 ? printf("4사분면") : printf("");

return 0; 

}


11.

#include <stdio.h>

#define PI 3.14


int main(void)

{

float r;

r= 900*360/7.2/2/PI;

printf("지구의 반지름 : %f", r);

return 0;

}


12. 


블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,

5장 Exercise


1. ②

단항 > 산술 > 관계> 논리> 대입> 콤마


2. ③


3. ①


4. ②

등호의 왼편이 변수가 아니므로


5. (a) 1.5     (b) 1     (c) 1.5    (d) 1.5


6. ③

① a; -> a:      ② 질문에 관련 없는 c가 나옴     ④ 괄호가 있으면 안됨


7. -2, 3, 1, 1

++x 는 증가된 값이 대입되고, x++는 이전값이 대입된 후 증가된다.

논리 AND 연산자는 두 피연산자가 모두 0이 아닌 값이 있는 경우 값 1을 생성한다. 피연산자 중 하나가 0이면 결과는 0이다. 논리 AND 연산의 첫째 피연산자가 0인 경우, 두 번째 피연산자는 계산되지 않는다.


8. 2, 3, 3


9. 0, 0, 0xFFFF, ~x

③ x와 ~x의 NOR 값은 겹치는 것이 하나도 없으므로 전부 1로 출력되어 F=1111 과 16진수라는 것을 알려주는 0x와 함께 0xFFFF로 값이 나온다.

④ x와 0xFFFF의 NOR 값은 ~x이다.


10. ①


11. 80

0x20 -> 32(10) -> 100000(2) 여기서 2씩 비트가 좌로 옮겨지면 10000000(2) -> 128(10) -> 80(16)


12. 1


13. 

(a) 무주택 기간 >= 3 && 가구주의 연령 >= 40 && 가족의 수 >= 3

(b) 나이 >= 6 && ( 키 >= 150 || 보호자 동반한 아이 키 < 150 )

(c) 평균학점 >= 3 && ( 토플점수 >= 300 || 토익점수 >=700)

블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,

4장 Programming


1.

#include <stdio.h>


int main(void)

{

float x;

printf("실수를 입력하시오: ");

scanf("%f", &x);

printf("실수형식으로는 %f 입니다\n", x);

printf("지수형식으로는 %e 입니다\n", x);

return 0; 

}



2.

#include <stdio.h>


int main(void)

{

double x;

printf("16진수 정수를 입력하시오: ");

scanf("%x", &x);

printf("8진수로는 %#o입니다\n", x);

printf("10진수로는 %d입니다\n", x);

printf("16진수로는 %#x입니다\n", x);

return 0;

}



3.

#include <stdio.h>


int main(void)

{

int x = 10;

int y = 20;

int z;

printf("x=%d y=%d\n", x, y);

z = x;

x = y;

y = z;

printf("x=%d y=%d\n", x, y);

return 0;

}



4.

#include <stdio.h>


int main(void)

{

float x, y, z, v;

printf("상자의 가로, 세로, 높이를 한번에 입력 :\n");

scanf("%f %f %f", &x, &y, &z);

v = x*y*z;

printf("상자의 부피는 %f 입니다\n", v);

return 0;

}



5.

#include <stdio.h>

#define SQMETER_PER_PYEONG 3.3058


int main(void)

{

double x, y;

printf("평을 입력하세요 :");

scanf("%lf", &x);

y=SQMETER_PER_PYEONG*x;

printf("%lf 평방미터입니다", y);

return 0; 

}


또는


#include <stdio.h>


int main(void)

{

double x, y;

const double SQMETER_PER_PYEONG = 3.3058;

printf("평을 입력하세요 :");

scanf("%lf", &x);

y=SQMETER_PER_PYEONG*x;

printf("%lf 평방미터입니다", y);

return 0; 

}


6.

#include <stdio.h>


int main(void)

{

double x = 3.32e-3;

double y = 9.76e-8;

printf("%lf", x+y);

return 0;

}



7.

#include <stdio.h>


int main(void)

{

double x, y, z;

printf("질량 : ");

scanf("%lf", &x);

printf("속도 : ");

scanf("%lf", &y);

z = x*y*y/2.0;

printf("운동에너지 : %lf", z);

return 0;

}



8.

#include <stdio.h>


int main(void)

{

char a;

printf("%c\n", 'a'+1);

printf("%c\n", 'a'+2);

printf("%c\n", 'a'+3);

return 0;

}



9.


#include <stdio.h>


int main(void)

{

printf("\a화재가 발생하였습니다 \a");

return 0;

}


10.


#include <stdio.h>


int main(void)

{

printf("\"ASCII code\", \'A\', \'B\', \'C\', \n");

printf("\\t \\a \\n");

return 0;

}


블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,

4장 Exercise

1. ③

식별자의 시작은 반드시 영문자 또는 _ 로 시작해야한다.

2. char - unsigned char - short - int - unsigned (int) - long - float - double

3.  ③

4. ②, ⑤

5. ③

6. ②

문자상수에는 역슬래시가 들어갈 수 없다.

7. ④

8. 

int, double, float, int, char

부동소수점 상수는 기본적으로 double형으로 저장된다. f나 F를 끝에 붙이형 float형 상수가 된다.

9. 

(a) 됨, (b) (c) (d) 안됨

식별자는 영문자, 숫자, 밑줄로만 이루어지고 첫시작에 숫자가 올 수 없다. 

10. 

(a) 3.141592e0 (b) 7.16532e2  

가수부분이 한 자리여야 한다.

11. ①, ③, ⑤

12. ②, ⑥

선언하는 형식의 종류가 다르면 줄바꿈을 해야한다. 5번의 long과 int는 같은 정수형이지만 6번의 short은 정수형, double은 부동소수점형으로 자료형 자체가 다르다.

13.

 (a) %f 또는 %lf  (b) %d (c) %d (d) %f

14. 

1.234는 double형이기 때문에 float형으로 선언하려면 뒤에 f,F가 붙어야 한다.

15. 

문자상수는 큰따옴표가 아닌 작은따옴표 안에서 아스키 코드로 변환될 수 있다.( "A" -> 'A')

가수부분은 0일때 생략가능하며 그 마저도 .은 붙여야 한다. (e10->1.0e10)

숫자에서 쉼표는 쓰이지 않는다. (2,000,000 -> 2000000)

16.

(a) 8진수=012            (b)  //'삡' 소리가 울리면서

    10진수=10                예제    프로그램

    16진수=0xa               100, 58, 1.2345


블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,

4장 Summary


PI라는 기호를 3.14로 정의한다. 이는 기호상수(symbolic C)와 리터럴상수(literal C) 중 기호상수를 의미한다. #define이 들어간 문장은 보통 컴파일러가 동작하기 전에 전처리기(preprocessor)가 처리한다.

상수의 자료형을 프로그래머가 명시적으로 지정하고 싶은 경우 접미사사로 L을 붙이면 100이라는 상수를 long형으로 간주한다.

실수는 가수부분과 지수부분으로 나누어 부동소수점 방식으로 표기한다. float는 32비트로 9비트를 지수에, 24비트를 가수에 할당하여 처음의 6개의 자리수까지만 정확하게 나타낸다. double과 long double은 64비트 중에서 11비트를 지수에 할당하고 53비트를 가수에 할당하여 대략 16자리를 나타낼 수 있다. 해당 표현은 1.0*10^-10으로 double 뿐만아니라 float로도 출력 가능하다.

문자는 변수로 저장될 수 도, 상수로 저장될 수도 있다. 이렇게 작은따옴표로 감싸진 문자를 문자상수(character constant)라고 한다.


프로그램에서 값이 변경될 수 있는 데이터 저장 장소를 변수(variable)라고 하고, 일단 값이 결정되면 이후로 변경되지 않는 데이터 저장 장소를 상수(constant)라고 한다.

식별자는 영문자, 숫자, 밑줄로 이루어진다.

C에서 고유한 의미를 가지고 있는 단어들을 식별자(identifier)라고 한다.

정수형에 속하는 자료형은 short, int, long 가 있다.

부동 소수점형에 속하는 자료형은 float, double, long double가 있다.

변수가 나타낼 수 있는 값의 범위를 넘어선 경우를 오버플로우(overflow) 라고 한고, 갑이 너무 작아서 변수가 나타낼 수 없는 경우를 언더플로우(underflow) 라고 한다.

십진수 10을 프로그램에서 16진수로 표현하여 보면 0xa가 되고, 8진수로 표현하여 보면 012가 된다.

컴퓨터 내부에서 음수는 2의 보수(2'complement)로 표시된다. 2의 보수란 양수에서 음수로 전환하는 방법으로 비트를 반전시키고 1을 더하면 되는 방법이다. 음수가 2의 보수로 표현되면 부호에 상관없이 무족선 이진수 덧셈을 하고 최상위 비트에서 올라오는 수를 무시하면 된다.

숫자값을 직접 사용하는 것보다 기호상수를 사용하는 것의 이점은 상수값을 변경할 때 일일히 변경하지 않고 기호상수의 정의만 변경하면 된다는 점이다.

C에서 문자를 나타내기 위해 사용하는 코드를 아스키 코드(ASCII)라고 한다.

하드웨어 제어를 목적으로 사용되는 특수문자를 제어문자라고 한다.


제어문자 

이름 

의미 

 \0

 널문자

 

 \a

 경고(bell) 

"삐" 하는 경고음 발생 

 \b

 백스페이스

커서를 현재의 위치에서 한 글자 뒤로 옮김 

 \t

 수평탭 

커서의 위치를 현재 라인에서 설정된 다음 탭 위치로 옮긴다 

 \n

 줄바꿈(newline) 

커서를 다음 라인의 시작위치로 옮긴다 

 \v

 수직탭

설정되어 있는 다음 수직탭 위치로 커서를 이동 

 \f

 폼피드(form feed) 

주로 프인터에서 강제적으로 다음 페이지로 넘길때 사용 

 \r

 캐리지 리턴 

커서를 현재 라인의 시작위치로 옮긴다 

 \"

 큰따옴표 

원래의 큰따옴표 자체 

 \'

 작은따옴표 

원래의 작은따옴표 자체 

 \\

 역슬래시

원래의 역슬래시 자체 

 

 

 



블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,