피씨컴의 기울어진 공관

2장 예제

프로그래밍/공부 2013. 2. 18. 22:44

★  2장_1번예제

 

#include <iostream>
using namespace std;

int main (void)
{

 int kor, math, eng, sum;   
 float average;      

 kor=100;       
 math=98;       
 eng=79;        

 sum=kor+math+eng;     
 average=sum/(float)3;    
          
          
          

 cout <<" 총접 " << sum <<endl;  
 cout <<" 평균 " << average <<endl; 

 return 0;
}

 

● 주석 & 과정

  1. 국어, 수학, 영어, 합계 저장용 정수형 변수 선언
  2. 평균 구할 실수형 변수를 선언 (평균은 실수도 나오니까)
  3. 국어 점수 입력
  4. 수학 점수 입력
  5. 영어 점수 입력
  6. sum변수에 국어, 수학, 영어 점수를 함한 값을 넣어줌
  7. average 변수에 앞서 총합계를 내고 저장한 변수 sum에 나누기 3을 해주고 3앞에 형변환 연산자
  8. (float)는 sum도 int 형이고 3도 int 형이여선 실수값이 나오질 않기 때문에 둘중 하나에 실수로 형변환
  9. 하여 두수의 결과가 실수로 나올 수 있도록 하여 저장함.
  10. 총점 출력
    평균 출력

     

    ● 결과 & 스크린샷

     


     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ★  2장_2번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     int num1 , num2 ;    

    cout << "정수l 입력" ;   
     cin >>num1;      

      cout << " 정수2 입력 : ";
      cin>> num2;     

      cout << num1 << " + "<< num2<<" = "<< num1+num2 << endl;  

      cout << num1 << " - "<< num2<<" = "<< num1-num2 << endl;  

      cout << num1 << " * "<< num2<<" = " << num1*num2 << endl; 

      cout << num1 << " / "<< num2<<" = "<< num1/num2 << endl;  

     return 0;
    }

     

     

    ● 주석 & 과정

    1. 정수를 입력받을 num1과 num2를 선언한다.
    2. num1에 입력을 받는다.
    3. num2에 입력을 받는다.
    4. num1 + num2를 실제 연산하여 결과를 출력
    5. num1 - num2를 실제 연산하여 결과를 출력
    6. num1 * num2를 실제 연산하여 결과를 출력
    7. num1 / num2를 실제 연산하여 결과를 출력

     

    ● 결과 & 스크린샷

     


     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ★  2장_3번예제

    #include <iostream>
     using namespace std;

    int main ()
    {
     int r;    

     float CArea, Cference;  

     cout << "반지름 입력:";
     cin >> r;     

     CArea=2* (float)3.14 *r ; 
     Cference=r*r*(float)3.14;

     cout << " 원의 넓이 " << CArea << endl;   

     cout << " 원의 면적 " << Cference << endl;  

     return 0;
    }

     

     

    ● 주석 & 과정

    1. 반지름을 입력받기 위한 int 변수 선언
    2. 넓이와 면적을 저장하기 위한 변수 선언
    3. r 변수에 반지름을 입력 받는다.
    4. CArea변수에 원의 넓이를 연산하여 넣는다.
    5. Cference 변수에 면적을 연산하여 넣는다.
    6. 결과 출력
    7. 결과 출력

     

    ● 결과 & 스크린샷



     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ★  2장_4번예제

     

    #include <iostream>
    using namespace std;

     int main()
     {

      float su;
      int n , i , imsi;

      cout << "실수 입력: ";
      cin>> su;        
      cout << "반올림 자릿수 입력:";
      cin>> n;         
      for (i=0; i <n; i++)    

       su=su*10;

      su=su+5;        

     imsi=( int)su/10;    

     su=(float)imsi;    


     for (i=0; i <n-1; i++)    

      su=su/ 10;      

      cout << " 반올림 결과값" << su << endl; 

      return 0;
     }

     

    ● 주석 & 과정

    1. 실수를 입력함.
    2. 반올림 자릿수 입력
    3. 반올림 자리수 까지 실수에 10을 곱함. 그럼 그 대상 자릿수의 숫자가 . 위로 올라옴
    4. 위로 올라간 값에 +5를 더하면 그 윗자리에 자연스레 +1 즉 반올림 효과가 남.
      그 상태로 su변수의 10을 나눠주면 맨처음 반올림할때 사용한 대상 값이 .밑으로 내려감
      그리고 이것을 int형 형변환으로 해준후 정수형 변수 imsi에 넣어줌으로서 
      뒤로 밀려난 처음 반올림할때 사용한 대상값이 날람. 결과적으론 처음.위에 있던 수와
      반올림 되어진 수만 남게 됨.
    5. 하지만 반올림 되어질 놈을 밑으로 내리기 위해선 실수변수에 넣어질 필요가 있으므로 실수로 형변환
    6. 그리고 반올림 했던 놈의 제자리를 찾기위해 .뒤로 보내기 위해 나누기 10을 함 그럼 . 뒤로 내려가는데 여기서 처음 반올림 자릿수의 -1 을 해준것은 위에서 한번 /10을 해줘서 이미 한칸은 내려와 있기 때문.
    7. 결과값 출력

     

    ● 결과 & 스크린샷

     

     

     

    ★  2장_5번예제

    #include <iostream>
    using namespace std;

    int main ( )
    {
     int height , weight;
     float std_weight;
     cout << " 키 입력:";
     cin>> height;      

     cout << "몸무게 입력:";
     cin>> weight;       

     std_weight=(height-100)*0.9f;   

     cout << " 표준 몸무게 " << std_weight << endl;
     if (weight < (std_weight*0.9f))  
      cout << "저체중입니다 " << endl;
     else if (weight > (std_weight*1.2f)) 

      cout << "과체중입니다" << endl;
     else       

      cout << "정상체중입니다" << endl;
     return 0;
    }

     

    ● 주석 & 과정

    1. 키입력
    2. 몸무게 입력
    3. 사용자가 입력한 키 데이터를가지고 표준 몸무게 공식에 의거해 표준 몸무게를 계산한다.
    4. 나온표준 몸무게에 0.9를 곱하여 저체증 표준을 정하여 입력한 몸무게와 비교하여 작으면 저체중 아니면 다음으로 넘어갑니다.
    5. 표준 몸무게에 1.2를 곱하여 과체증 표준을 정하고 그것을 입력된 몸무게와 비교하여 입력된 몸무게가 더크면 과체중 아니면 다음으로 넘어갑니다.
    6. 위에 조건들이 모두 해당이 안되면 실행이 되며 결과론 표준보다 낮지도 높지도 않다는 뜻이기에 정상체중입니다.

    ● 결과 & 스크린샷

     

     

     

     

     

     

    ★  2장_6번예제

    #include <iostream>
    using namespace std;
    int main ()
    {
        cout << "int 헝 변수의 크기" << sizeof(int) << "바이트" << endl;    

       cout << "char형 변수의 크기" << sizeof(char) << "바이트" << endl;    

      cout << "double 헝 변수의 크기" << sizeof(double) << "바이트" << endl;   

     return 0;
    }

    ● 주석 & 과정

    1. sizeof는할당된 기억장소의 크기를 구하는 동작을 수행합니다.
    2. sizeof로 int자료형의 크기를 확인합니다.
    3. sizeof로 char자료형의 크기를 확인합니다.
    4. sizeof로 double자료형의 크기를 확인합니다.

    ● 결과 & 스크린샷

     

     

     

    ★  2장_7번예제

    #include <iostream>
    using namespace std;
    int main ()
     {
     int num1 , num2;           
     int sum, sub, mul , div1;
     double div2;
     cout.setf(ios_base::fixed, ios_base::floatfield);  

     cout << "정수 입력:";
     cin>> num1;           

     cout << " 정수 입력 : " ;
     cin>> num2;            

     sum=num1+num2;           

     sub=num1-num2 ;            

     mul=num1 *num2 ;         

     div1=num1/num2;            
     div2=num1 / num2;          

     cout << " 덧셈 결과" << sum << endl;
     cout << "밸셈 결과" << sub << endl;
     cout << "곱셈 결과" << mul << endl;
     cout << "나눗셈 (int) 결과" << div1 << endl;
     cout << "나눗셈 (double) 결과" << div2 << endl;
     div2=num1/(double)num2;         

     cout << "나눗셈 (double) 결과" << div2 << endl;
     return 0;
    }

    ● 주석 & 과정

    1. 고정소수점표기 사용
    2. 정수 num1에 입력
    3. 정수num2에 입력
    4. num1 과 num2를 더한 값을 sum에 저장 
    5. num1 과 num2를 뺀 값을 sub에 저장
    6. num1 과 num2를 곱한 값을 mul에 저장
    7. num1 과 num2를 나눈 값을 div1에 저장 (int형)
    8. num1 과 num2를 나눈 값을 div2에 저장 (float)변수에 저장하나 int와int의 나눗셈이므로 소숫점 뒷자리는 짤린다.
    9. num1과 num2 모두 int 지만 num2를 실수로 형변환 함으로서 결과값은 소수점 뒷자리까지 짤리지 않고 나오며같은 실수변수인 div2에 저장되므로 2.5000가 될수 있다.

     

     

    ● 결과 & 스크린샷

     

     

     

    ★  2장_8번예제

    #include <iostream>
    using namespace std;
    int main ( )
    {
     int a=23 , r=0;
     r=a+1;   
     cout << a << " + 1 =" << r << endl; 

     a=2147483647;  

     r=a+1;    

     cout << a << " + 1 =" << r << endl;
           

    return 0;
    }

    ● 주석 & 과정

    1.  a에다가 +1을 하고 r변수에 저장
    2.  그리고 r을 출력
    3. a 에다가 2147... 로 재 초기화
    4. a에다가 +1한 값을 r에 저장
    5. 이때 r 변수는 2147483648 이 나와야 하는데 -2147483648가 출력이 된다.  그이유는 자료형이 표현할수 있는 최대 값을 넘었기 때문.
      이렇게 최대값을 넘는 경우 다시 최소값부터 진행되어 -2147483648 나오는것
      만약 2147483647에 3을 더하면 같은 이유로 -2147483646이 된다.

    ● 결과 & 스크린샷

     

     

     

    ★  2장_9번예제

    #include <iostream>
    using namespace std;
    int main ( )
    {
     int a=20 , b=3;
     float c , d;
     c=a/ 3.5f;   
     d=a/b;    
          
     cout << " 연산 결과: 정수헝" << c << endl;
     cout << " 언산 결과: 실수형" << d << endl;
     return 0;
    }

    ● 주석 & 과정

    1. 정수와 실수의 연산이므로 결과는 실수값이 출력된다.
    2. 정수와 정수의 연산이므로 결과는 정수값이 출력된다.
    3. 이를 해결하려면 다음과 같이 실수로 형변환을 해야한다.
      d= (float) a /b;

    ● 결과 & 스크린샷

     

     

     

    ★  2장_10번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     int num1=10 , num2=4;  

     int result;
     result=num1 / num2;   

     cout << "10 / 4 = 2"<< endl; 
     cout << num1 << " / " << num2 <<" = "<< result << endl;  

     return 0;
    }

    ● 주석 & 과정

    1. num1과num2에 각각 10과 4로초기화
    2. result 에 num1과 num2의 연산 값 할당
    3. 출력

    ● 결과 & 스크린샷

     

     

     

    ★  2장_11번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     int a=100 , b=32;  
     int q , r;
     q=a/b;     
     r=a%b;     
     cout << a << " / " << b << "의 몫"<< q << endl;  
     cout << a << " / " << b << "의 나머지"<< r << endl; 

    return 0;
    }

    ● 주석 & 과정

    1. 각각 a,b에 100과 32로 초기화 한다.
    2.  나누어 몫을 구하고
    3.  나머지를 구한다.
    4. 그리고 출력
    5. 그리고 출력

    ● 결과 & 스크린샷

     

     

    ★  2장_12번예제

    #include <iostream>
    using namespace std;
    int main ()
    {
     int a;   

     a=a+1;   
     a=a+1;   a=a+1;    

     cout << "a의 값" << a << endl; 
     return 0;
    }

    ● 주석 & 과정

    1.  선언은 했지만 초기화는 안했다.
    2. 그상태에서 +1 을 하고
    3. +1 을 하고 
    4. +1 을 하면
    5. 에러가 난다. 초기화도 안하고 쓰레기 값에 +1을 한 결과이다.

    ● 결과 & 스크린샷

     

     

     

    ★  2장_13번예제

    #include <iostream>

    using namespace std;
    int main()
    {
     int i_add, i_mul;
     i_add=0;  

     i_mul=1;  

     i_add+=5;  

     i_add+=5;  

     i_add+=5;  

     i_mul*=5;  

     i_mul*=5;  

     i_mul*=5;  

     cout << "덧셈 누적 결과:"<< i_add << endl;
     cout << "곱셈 누적 결과:"<< i_mul << endl;
     int a=10;   

     a++;    

     cout << "a=" << a << endl; 

     cout << "a=" << a++ << endl; 

     cout << "a=" << ++a << endl; 

     cout << "a=" << a << endl;  


     return 0;
    }

     

    ● 주석 & 과정

    1. 0으로 초기화
    2. 1로 초기화
    3. i_add변수에 i_add = i_add+5; 연산을함
    4. i_add변수에 i_add = i_add+5; 연산을함
    5. i_add변수에 i_add = i_add+5; 연산을함
    6. i_mul변수에 i_mul = i_mul*5; 연산을함 5 *1
    7. i_mul변수에 i_mul = i_mul*5; 연산을함 5 *2 = 25
    8. i_mul변수에 i_mul = i_mul*5; 연산을함 25 * 5 = 125
    9.  정수형 변수 a을 10로 초기화
    10.  a를 +1 후치형으로 업
    11.  출력 결과11
    12. 후치형으로 1+ 하지만 여기에선 증가한 값은 안나오고 현제값만 나옴 결과 11 
    13. a의 앞에서 증가한 값에 전치형 증감연산 +1을 더함 결과13
    14.  그리고 출력 결과13

     

    ● 결과 & 스크린샷

     

     

     

    ★  2장_14번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     bool a=true;     

     cout << "a= " << a << endl; 

     a=false;      

     cout << "a= " << a << endl;  

     a=-98;       

     cout << "a= " << a << endl;  

     a=0;       

     cout << "a= " << a << endl; 

    return 0;
    }

     

    ● 주석 & 과정

    1. a를 true로 초기화
    2. a를 출력 a가 true 즉 참이기 때문에 1출력
    3. a를 false로 수정
    4. a를 출력 a가 false 즉 거짓이기 때문에 0출력
    5. a를 -98로 수정
    6. a가 0이 아니기 때문에 true 출력(0이 아니면 모두 참임)
    7. a를 0으로 수정
    8. a를 출력 a가 0 즉 false 거짓이기 때문에 0출력

     

    ● 결과 & 스크린샷

     

     

     

    ★  2장_15번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     bool a;            
     a=10>3;            
     cout << "10>3 의 결과" << a << endl;    
     a=13<=10;           
     cout << "13<=10 의 결과" << a << endl;    
     a=20!=20;           
     cout << "20! =20 의 결과" << a << endl;    
     a=(3+10) && (4<3);         
     cout << " (3+10) && (4<3) 의 결과" << a << endl; 
     a=(3+10) || (4<3 );         
     cout << "( 3+10) || (4<3 ) 의 결과" << a << endl; 
     a=!3;            
     cout << "!3 의 결과" << a << endl ;     
     return 0;
    }

    ● 주석 & 과정

    1. bool 형 a 선언
    2. 10이 3보다 크므로 a가 true 가 됨
    3. a 가 true 이므로 1 출력
    4. 13이 10보다 작거나 같음의 조건이 충족 안됨 false
    5. a 가 false 이므로 0 출력
    6. 20은 20과 같지 않다 의 조건이 충족 안됨 false
    7.  a 가 false 이므로 0 출력
    8. 3+10 왼쪽이 참 오른쪽 (4<3) 이 거짓이기에 모두 참이어야하는 && 특성상 조건 미충족 false
    9. a 가 false 이므로 0 출력
    10. 3+10 왼쪽이 참 오른쪽(4<3)이 거짓 하지만 어느 한쪽만 참이기만 하면 되는 ||특성상 조건 충족 true
    11. a 가 true 이므로 1 출력
    12. 0이 아닌것은 참이다 !은 참이면 거짓인 특성상 false
    13. a 가 false 이므로 0 출력


     

    ● 결과 & 스크린샷

     

     

     

    ★  2장_16번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     int a=1234 , b=0x12345678;             

                        
                        
     cout << hex << "16 진수 a =" << a << dec << " \t \t 10 진수 a "<< a << endl;
     cout << hex << "16 진수 b =" << b << dec << "\t10 진수 b "<< b << endl;  
     return 0;
    }

    ● 주석 & 과정

    1.   각각 1234와 0x12345678로 초기화 0x가 붙는 것 이것은 16진수로 표기한 수임을 나타냄
    2. hex와 dec가 사용되었다. 이는 화면에 출력하는 포뱃을 결정히는 것으로
    3. hex는 다음에 출력되는 숫자는 16진수로 표기하라는 뭇이며 dec는 10진수로 표기하라는 뜻.
    4. 출력

    ● 결과 & 스크린샷

     

    ★  2장_17번예제

    #include <iostream>
    using namespace std;
    int main ( )
    {
     int a=0x12345678 , b , c , d , e;          
     b=a>>4;                 
     c=a<<4;                 
     d=a^b;                 
     e=-a;                 
     cout << hex << "16 진수 b =" << b << dec << "\t 10 진수 b "<< b << endl;
     cout << hex << "16 진수 c = " << c << dec << "\t 10 진수 c "<< c << endl;
     cout << hex << "16 진수 d =" << d << dec << "\t 1O 진수 d "<< d << endl;
     cout << hex << "16 진수 e =" << e << dec << "\t 10 진수 e "<< e << endl;
     return 0;
    }

    ● 주석 & 과정

    1. a에 16진수 0x12345678선언 그밖에 b,c,d,e도 선언
    2. a를 오른쪽 4만큼 쉬프트 연산하고 그 결과값을 b에 저장
    3. a를 왼쪽 4만큼 쉬프트 연산하고 그 결과값을 c에 저장
    4. a에 b값을 XOR연산하고 그 결과 값을 d에 저장
    5. e에 a만큼 - 를 함.
    6. 출력

    ● 결과 & 스크린샷

     

     

    ★  2장_18번예제

    #include <iostream>
    using namespace std;
    int main()
    {
     bool a=3*4-78 < 12-8 % 5;       
     cout << "연산 결과 " << a << endl;  
     return 0;
    }

    ● 주석 & 과정

    1. 왼쪽에서 오른쪽 방향인 관계상 3*4를 먼저하고 그 결과값에 -78을 한다.
    2. 그후 8%5를 하고 그 결과값에 -12 한다.
    3. 그 결과 왼쪽 값이 오른쪽 값보다 작기 때문에 결과는 true

    ● 결과 & 스크린샷

    '프로그래밍 > 공부' 카테고리의 다른 글

    4장 예제  (0) 2013.02.19
    3장 예제  (0) 2013.02.18
    4장 정리  (0) 2013.02.17
    제 3장 조건문, 반복문 네임스페이스  (0) 2013.02.14
    정식수업 2일차  (0) 2013.02.14
    Posted by 피씨컴