exercise-1 숫자의 합과 차

연습문제 2015. 4. 20. 09:00 Posted by 네트동자

exercise-1

두 정수를 입력받아 두 숫자의 합과 차를 출력하는 프로그램을 만들라.


단, 출력결과는 다음의 형식을 따른다.

출력되는 모든 숫자는 소스코드에 직접 작성해서는 안되고, 숫자 입력 방식을 통해 

결과물을 도출하라.



- 혼자서 충분히 고민해 보세요 (정답은 다음 페이지에 있습니다)

No.19 scanf( ) 함수 예제.

C언어 기초 2015. 4. 18. 09:00 Posted by 네트동자

01: #include <stdio.h>

02: int main(void)

03: {

04: int a, b, c;

05:

06: printf("10진수 정수 1개 입력: ");

07: scanf("%d", &a);

08: printf("10진수 : %d, 16진수 : %x, 8진수 : %o \n", a, a, a);

09:

10: printf("16진수 정수 1개 입력 : ");

11: scanf("%x", &b);

12: printf("10진수 : %d, 16진수: %x, 8진수 : %o \n", b, b, b);

13:

14: printf("8진수 정수 1개 입력 :");

15: scanf("%o", &c);

16: printf("10진수 : %d, 16진수 : %x, 8진수 : %o \n\n\n",b , b, b);

17:

18: return 0;

19:

20: }



결과값



04행에서 정수 데이터를 저장하기 위해 변수 a, b, c 를  int형으로 선언합니다.

정수형 변수는 int 을 많이 사용합니다.

변수에 대해서는 다음에 더 자세히 이야기 하겠습니다.


07행에서 10진수 정수(%d) 한 개를 키보드로 입력받아 변수 a에 저장합니다.

08행에서 변수 a 에 저장된 값을 각각 10진수, 16진수, 8진수로 출력한다.


11행에서 16진수 정수(%x) 한 개를 키보드로부터 입력받아 변수 b에 저장한다.

12행부터는 저장된 값을 각각 10진수, 16진수, 8진수로 출력한다.


15행에서 8진수 정수(%o) 한 개를 키보드로 입력받아 변수 c에 저장한다.

16행에서는 저장된 값을 각각 10진수, 16진수, 8진수로 출력된다.




위의 예제는 정수 값을 입력할 때 사용하는 '서식문자' 들이다.


다음 Chapter 에서는 

'실수'값을 입력할 때 사용하는 '서식문자'에 관해 공부해보자.









No.18 서식 문자.

C언어 기초 2015. 4. 17. 09:00 Posted by 네트동자

scanf( ) 함수의 f도 

printf( ) 함수에서처럼 'formatted' 서식화된 의미로 같은 서식문자를 사용한다.


즉,

10진수 정수, 8진수 정수, 16진수 정수, 실수, 문자, 문자열 등을 입력받을 수 있다.


입력 서식문자에 대한 자세한 내용은 다음 표에 기재되어 있으니 참고하세요.^^


 서식 문자

   입력 형태

 %d

  10진수 정수 입력

 %x

  16진수 정수 입력

 %o

   8진수 정수 입력

  %f 

  float형 실수 입력

 %lf

  double형 실수 입력

 %c

  한 개의 문자 입력

 %s

  문자열 입력

 %u

  10진수 정수 (양수만 표현가능) 입력

 %e 

  float형 e 표기법에 의한 실수 입력

 %le 

  double형 e 표기법에 의한 실수 입력



No.17 scanf( ) 함수 예제

C언어 기초 2015. 4. 17. 09:00 Posted by 네트동자

01: #include <stdio.h>

02: int main(void)

03: {

04: int age;

05: printf("What is your age? : ");

06: scanf("%d", &age);

07: printf("Wow! Really? Are you %d years old? \n\n\n", age);

08:

09: return 0;

10: }



04행에서 age는 

06행의 

scanf( ) 함수에서 입력받은 데이터를 저장하기 위해서 선언된 변수 (임시 저장 공간) 이다.



궁금한 점.

왜,             scanf("%d", age) 라고 하지 않고

                scanf("%d", &age) 라고 age 앞에 &을 붙여줄까?


간단히 설명해보겠다.

               &age는 변수 age 를 위해 할당된 메모리의 주소를 의미한다.


 scanf("%d", &age) 라는 표현은 10진수 Data를 입력받아서 

                '변수 age의 메모리 주소'에 '입력값'을 저장하라는 의미이다.


한마디로 말해서 이런거다.

당신이 택배(Data)를 받을 때, 어떻게 해야 택배를 받을 수 있는가 ? 

바로 '주소'가 있어야 '택배'를 받을 수 있다.


이때, 택배는 10진수 data이고,

      주소는 &age를 의미한다.

즉, 10진수 data가 도달해야 할 주소 &age 를 의미한다.



 


               

No.16 scanf() 함수의 기본 구조

C언어 기초 2015. 4. 17. 09:00 Posted by 네트동자

Keaboard 로부터 Data를 입력받은 후,

입력받은 Data를 사용하고자 한다면, 입력받은 Data를 저장해야한다.

이것이 scanf( ) 함수의 기본기능 중 하나이다.


Example)

10진수 Data를 하나 입력받아 저장하려면

다음과 같이 사용한다.


scanf("%d",&a)

"%d" 입력을 위한 서식문자.

&a    입력을 저장하는 변수.


위의 예에서 살펴볼 수 있듯이

scanf( ) 함수도 printf( ) 함수와 같이 '서식문자'를 사용한다.

scanf( ) 함수에서 사용하는 서식문자는 입력받을 Data의 Type을 결정하기 위해서이다.

위의 서식문자 %d 는 keaboard를 통해서 10진수를 입력받는다는 것을 의미한다.


그리고, &a는 입력받을 값을 저장하는 '임시저장공간'과 관계가 있다.

이에 대한 내용은 다음 Chapter에서 공부할 '변수'에 관해서 알아야 이해할 수 있다.

일단은 쉽게 생각해서,

keaboard 로부터 입력받은 Data를 a라는 이름의 변수에 (임시 저장 공간)에 저장한다고 생각해보자.


----- to be continued.


 




- 키보드로부터 데이터를 입력받는 것을 표준입력.

- 모니터에     데이터를 출력하는 것을 표준출력.


scanf( ) 함수 역시 printf( ) 함수와 마찬가지로

stdio.h 헤더 파일에 정의되어 있는 표준 라이브러리 함수에 속한다.


그러므로, scanf( ) 함수를 사용하려면,

printf( ) 함수와 마찬가지로,


stdio.h 헤더파일을 include 해야한다.



14번째 - 필드 폭 지정.

C언어 기초 2015. 4. 16. 09:00 Posted by 네트동자

서식문자에 적절한 옵션을 추가하면 

출력되는 데이터 필드의 폭을 조절할 수 있다.


다시 말해,

일정한 간격으로 데이터를 출력할 수 있게 해준다.


다음은 '서식 문자'에 옵션을 추가하는 예들이다.


%03d 필드 폭을 3칸 확보, 오른쪽으로 정렬해서 출력, 남은 자리는 0으로 채움.

%-3d 필드 폭을 3칸 확보, 왼쪽으로   정렬해서 출력.

%+3d 필드 폭을 3칸 확보, 오른쪽으로 정렬해서 출력, 양수는 +부호를 붙이고

                                                             음수는 -부호를 붙여서 출력.




다음 예제를 통해 연습해보자.


01: #include <stdio.h>

02: int main(void)

03: {

04: printf("%03d, %03d, %03d \n", 1, 20, 300);

05: printf("%-3d, %-3d, %-3d \n", 1, 20, 300);

06: printf("%+3d, %+3d, %+3d \n", 1, 20, 300);

07: printf("%+3d, %+3d, %+3d \n", 1, 20, -300);

08:

09: return 0;

10: }



결과값.


001, 020, 300

1  , 20 , 300

 +1, +20, +300

 +1, +20, -300

계속하려면 아무키나 누르십시오 . . .


 06행과 07행은 

%+3d 필드 폭을 3칸 확보, 오른쪽으로 정렬해서 출력, 양수는 +부호를 붙이고

                                                             음수는 -부호를 붙여서 출력.

위의 서식 문자 옵션에 따라 각각 데이터값에 +, - 부호를 붙여서 출력하게 된다.


01: #include <stdio.h>

02: int main(void)

03: {

04: printf("%f \n", 0.000123);    //소수점이하 6자리

05: printf("%f \n", 0.0001236);   //소수점이하 6자리 초과

06:

07: printf("%e \n", 0.000123);    //소수점이하 6자리

08: printf("%E \n", 0.0001236);   //소수점이하 6자리 초과

09:

10: printf("%g \n", 0.000123);    //소수점이하 6자리

11: printf("%G \n", 0.0000123456);//소수점이하 6자리 초과

12:

13: printf("올해 우리나라 경제 성장률은 5%%입니다. \n");

14:

15: return 0;

16: }



실행결과는 다음과 같다.



0.000123

0.000124

1.230000e-004                     // 1.23*  (10의 -4승)   을 의미

1.236000E-004                     // 1.236* (10의 -4승)   을 의미

0.000123

1.2345E-005                        // 1.23456* (10의 -5승) 을 의미

올해 우리나라 경제 성장률은 5%입니다.




12번째 10진수 정수(양수) - %u

C언어 기초 2015. 4. 16. 09:00 Posted by 네트동자

01: #include <stdio.h>

02: int main(void)

03: {

04: printf("%d \n", 2147483647);   //2147483647

05: printf("%d \n", 2147483650);  //-2147483646

06: printf("%u \n", 4294967295);   //2147483647의 약 2배

07:

08: return 0;

09: }



서식문자 %u를 사용하면 

%d로 출력할 수 있는 양수의 범위보다

2배 더 넓게 출력할 수 있다.


위의 예제는 서식문자 %d와 %u의 차이를 잘 설명하고 있는 코딩이다.


04행은 서식문자 %d로 표현할 수 있는 최대값 2147483647을 출력했다.

05행은 서식문자 %d가 출력할 수 있는 최대값을 넘어서는 수치가 기입되었기에 이상한 음수값이 출력되었다.


06행은 서식문자 %d로 표현할 수 있는 최대값 2147483647보다 큰 값을 출력하기 위해서

          서식문자 %u를 사용하고 있다.

          서식문자 %u로 표현할 수 있는 최대값은 4294967295 이다. 

          이 값은 %d로 출력할 수 있는 최대값의 약 2배이다.


그럼에도 불구하고, %u 역시 표현할 수 있는 최대값보다 큰 값을 대입하면, 서식문자 %d와 마찬가지로 이상한 값이 출력된다.






        



문자와 문자열 출력하기.

C언어 기초 2015. 4. 14. 09:00 Posted by 네트동자

01: #include <stdio.h>

02: int main(void)

03: {

05: printf("a를 대문자로 표현하면 %c입니다. \n", 'A');

06: printf("%s %c입니다. \n", "a를 대문자로 표현하면", 'A');

07: printf("%s %d %s \n", "2곱하기 3은", 2 * 3, "입니다.");



08: return 0;

09: }


위의 간단한 C프로그램으로 결과 값을 예측해보자.


예상결과)

a를 대문자로 표현하면 A입니다.

a를 대문자로 표현하면 A입니다.

2곱하기 3은 6입니다.


실제 결과값은 다음과 같다.