1. 데이터를 입력 받는 형태를 지정

 
#include <stdio.h>

int main(void) {
     printf("3개의 값 입력 : ");
     scanf("%d %o %x", &i, &j, &k);

     printf("결과 : ");
     printf("%d %d %d", i, j, k);

     return 0;
}


%d : 10진수 형태로 입력 받겠다고 선언
%o : 8진수 형태로 입력 받겠다고 선언
%x : 16진수 형태로 입력 받겠다고 선언


2. 실수 입력의 주의사항


#include <stdio.h>


int main(void) {
     float vaf;
     double vad;

     printf("2개의 값 입력 : ");
     scanf("%f %le", %vaf, %vad);

     printf("결과 : ");
     printf("%f, %e\n", vaf, vad);

     return 0;
}



서식에 따라 소수점 자리수가 차이나므로 float 형과 Double 형의 적절한 사용을 필요로 하게 된다. float 형은 6자리까지 인식이 가능하므로 사용에 주의하도록 한다.

특히 값을 입력받을 때 소수점 자리가 6자리가 초과하게 된다면 반드시 %le 또는 %lf 라는 식으로 l을 붙이도록 한다. 결과값을 출력할 때에는 %le의 l은 빼도 괜찮으며 %lf 라는 식으로 작성도 가능하다.
Posted by 리트모스
:

서식 문자를 이용하여 출력하는 값의 폭을 지정하는 것이 가능하다.

 
#include <stdio.h>

int main(void) {
     printf("|%10d| |%10d| |%10d|\n", 100, 200, 300);
     printf("|%-10d| |%-10d| |%-10d|\n", 100, 200, 300);
     printf("|%+10d| |%+10d| |%+10d|\n", 100, 200, -300);
     return 0;
}


%10d : 필드 폭을 10칸 확보하고 오른쪽 정렬을 하여 출력
%-10d : 필드 폭을 10칸 확보하고 왼쪽 정렬을 하여 출력
%+10d : 필드 폭을 10칸 확보하고 오른쪽 정렬을 하며 양수·음수 기호를 출력

아래의 내용은 위 소스의 출력 결과이다.



|       100| |       200| |       300|
|100       | |200       | |300       |
|      +100| |      +200| |      -300|
계속하려면 아무 키나 누르십시오 . . .



Posted by 리트모스
:

문자 출력

%c : 단일문자
%s : 문자열


부호 있는 정수·실수형 출력

%d : 부호 있는 10진 정수

%i : 부호 있는 10진 정수, (=%d)
%f : 부호 있는 10진 실수
%lf : 부호있는 10진 실수


부호 없는 정수형 출력(unsigned)

%o : 부호 없는 8진 정수
%u : 부호 없는 10진 정수
%x : 부호 없는 16진 정수, 소문자 사용
%X : 부호 없는 16진 정수, 대문자 사용


표기법에 의한 실수 출력(부동소수점 표현 방식에 의한 출력)

%e : e 표기법에 의한 실수
%E : E 표기법에 의한 실수


값에 따라 하나를 선택 출력

%g : 값에 따라서 %f, %e 둘 중 하나를 선택
%G : 값에 따라서 %f, %E 둘 중 하나를 선택


기타

%% : 퍼센트(%) 기호를 출력
Posted by 리트모스
:

부동 소수점 표현 방식은 수를 (가수)×(밑수)(지수)와 같이 유효숫자를 사용한 곱셈 형태로 표현한다.

 
±(1.m) x 2e-127
 

유효 숫자를 잃어버리는 문제 뿐만 아니라, π와 0.1를 정확하게 표현하지 못하는 문제다른 약간의 부정확성이 다음과 같은 현상을 일으킨다.

1. 소거
거의 같은 두 값을 빼는 것은 정확성을 매우 많이 잃게 된다. 이 문제가 아마도 가장 일반적이고 심각한 정확도 문제이다.

2. 정수로의 변환 문제
(63.0/9.0)을 정수로 변환하면 7이 되지만 (0.63/0.09)는 6이 된다. 이는 일반적으로 반올림 대신 버림을 하기 때문이다.

3. 제한된 지수부
결과값이 오버플로우되어 무한대값이 되거나 언더플로우되어 비정상 값 또는 0이 될 수 있다. 만약 비정상 값이 되면 유효숫자를 완전히 잃어버린다.

4. 나눗셈이 안전한지 검사하는데 문제가 생김
제수(나눗수)가 0이 아님을 검사하는 것이 나눗셈이 오버플로우되고 무한대값이 되지 않는 걸 보장하지 않는다.

5. 같음을 검사하는데 문제가 생김
수학적으로 같은 계산결과가 나오는 두 계산 순서가 다른 부동소수점 값을 만들어낼 수 있다. 프로그래머는 어느정도의 허용 오차를 가지고 비교를 수행하지만, 그렇다고 해서 문제가 완전히 없어지지 않는다.

컴퓨터가 부동소수점 방식을 이용하는 한 이 문제는 해결할 방법이 없다고 보면 된다. 이를 숙지하길 바란다. 아래의 Java와 C/C++ 예제를 통해 테스트 해보길 권한다.

Java float 계산 예제


public class 
FloatTest {
  public static void main(String[] args) {

    float f = 0;
    
    for(int i = 0; i < 100; i++) { f += 0.1; }
    System.out.print(f);
  }
}



C/C++ float 계산 예제


#include<stdio.h>

int main(void) {
      int i; float f = 0;

      for(i=0; i < 100; i++) { f += 0.1; }
      printf("%f\n", f);
 
      return 0;
}


상세내용 참조 : 한글 위키백과
http://ko.wikipedia.org/wiki/%EB%B6%80%EB%8F%99%EC%86%8C%EC%88%98%EC%A0%90

Posted by 리트모스
:
C/C++의 시작을 위해서 Microsoft Visual C++ 2008 Express Edition with SP1를 설치하도록 한다. VC++ 2008 Express Edition의 경우 소프트웨어 구매 비용을 들이지 않고도 학습이 가능한 공개 소프트웨어이다.


지금도 Visual Studio 6 버전을 찾고 있는 분들을 보았는데 아직 소프트웨어를 구매하지 않은 분들은 VC++ 2008 Express Edition 버전을 무료로 다운로드해서 사용하길 권장한다. 이 사항에 대해서는 많은 분들이 내용을 다루고 있으니 검색을 통하여 자세한 내용을 알아보길 바란다. 차후 새로 포스팅되는 내용에 추가될지도 모르겠다.

vcsetup.exe

파일 출처 : http://www.microsoft.com/express/download/default.aspx

위의 파일을 다운 받아서 설치하던지 출처로 이동해서 다운로드 받는다.

 

다운로드가 회선 문제인지는 모르겠으나 10k ~ 50k/cps 정도의 매우 느린 속도로 진행되는 것이 확인하였는데, 109MB를 다운로드하는데 약 40분의 시간이 소요되었다. 그리고 Microsoft .NET Framework 3.5 SP1을 제외한 항목은 빠른 시간내에 설치되었다.

Microsoft .NET Framework 3.5 SP1만 30분 이상의 시간이 소요 되었다. 혹시 설치중에 멈춘 것이 아닌지 의문이 가는 분들은 진행 게이지를 자세히 살펴보길 바란다. 중간에 강제 설치 취소하여 시간을 낭비하는 실수를 하지 않길 바란다.



감사합니다.

 

Posted by 리트모스
: