▩ 제어문 - 반복문 while 문


   - 반복 횟수가 지정되어 있지않은 경우
   - 조건식이 참이면 계속 실행한다.


   - 무한 루틴: 무한 루틴인 경우는 대부분 if문과 break문을 동반하는 경우가 많다.
     while(1){
         문장 실행;
     }



>>>>> 1부터 10까지 합을 구하는 while문


 #include <stdio.h>

 void main() {
   int i=1, sum=0;

   while(i<=10) {
     printf("현재 수는 %d입니다.\n", i);
     sum += i;
     i++;
   }
   printf("총합은 %d입니다.\n", sum);
 }




▩ 제어문 - 반복문 do~while 문


   - do-while 문 : 최소한 1회 이상 실행될 필요가 있는 경우



 >>>>> 1부터 10까지 합을 구하는 do~while문


  #include <stdio.h>

 void main() {
   int i=1, sum=0;

   do {
     printf("현재 수는 %d입니다.\n",  i);
     sum += i;
     i++;
   } while(i<=10);
   printf("총합은 %d입니다.\n", sum);
 }




▩ break문을 이용한 루프의 중단


   - 반드시 if문을 동반
   - 반복문 탈출
   - 특정 값에서 반복 처리를 멈추어야 할 경우



>>>>> break문의 이용


 #include <stdio.h>
 #include <conio.h>

 void main() {
   int a, b;

   printf("=========\n");
   for(a=1; a<=5; a++) {
      for(b=1; b<=10; b++) {
      printf("A=%d, B=%d\n", a, b);
      if(a==b) break;
      }
      printf("=========\n");
   }
   getch();
 }




▩ continue문을 통한 반복문 흐름의 제어


   - 루프를 탈출하지 않으면서 특정 조건에만 반복루틴을 처리하지 않음
  


>>>>> continue 문의 이용


 #include <stdio.h>

 void main() {
   int a, b;

   printf("=========\n");
   for(a=1; a<=4; a++) {
      for(b=1; b<=4; b++) {
 if(a==b)
    continue;
 printf("A=%d, B=%d\n", a ,b);
      }
   printf("=========\n");
   }  
 }

Posted by 나비:D
:

▩ 제어문 - 반복문 for 문


   - 반복 횟수가 지정되어 있는 경우
   - for문은 내부에 초기화 코드를 가지고 있다.
   - 조건식이 참이면 계속 실행한다.

   for(초기화;  조건식;  재초기화){
     ⓐ -------> ⓑ <-------- ⓓ
                 │           ↗
                 │         /
                 │       /
                 │     /
              printf("★");
                 │ /
                 ↓/
                  ⓒ
             실행 문장;
   }


1. 최초 처리순서
   ⓐ --> ⓑ --> ⓒ --> ⓓ --> ⓔ --> ⓑ --> ⓒ


2. 반복 처리순서
   ⓑ --> ⓒ --> ⓓ --> ⓔ --> ⓑ --> ⓒ



>>>>> 1부터 10까지 출력하는 프로그램


 #include <stdio.h>

 void main() {
   int k;

   for(k=1 ; k<=10 ; k++)
      printf("%d을(를) 출력합니다.\n", k);
 }



>>>>> 100부터 1까지 짝수만 출력하는 프로그램


 #include <stdio.h>

 void main() {
   int i;

   for(i=100; i>0; i=i-2)
      printf("%d을(를) 출력합니다.\n", i);
 }



>>>>> 1부터 10까지의 합계를 구하는 프로그램


 #include <stdio.h>

 void main() {
   int i, sum=0;

   for(i=1; i<=10; i++) {
      printf("%d\n", i);
      sum += i;
   }
   printf("합계는 %d입니다.\n", sum);
 }



>>>>> 1부터 100까지 중에서 3의 배수의 개수와 합계를 구하는 프로그램
 

#include <stdio.h>

 void main() {
   int i, cnt=0;
   long sum=0;

   for(i=1; i<=100; i += 3) {
      printf("%d\n", i);
      sum += i;
      cnt++;
   }
   printf("합계는 %ld입니다.\n", sum);
   printf("개수는 %d개입니다.\n", cnt);
 }


▷ 위의 프로그램을 for문은 for(i=0; i<=100; i++)로 변경하고 if문을 사용하여 같은 결과가 나오도록 수정하세요.



>>>>>> 구구단을 출력하는 중첩된 for 문


 #include <stdio.h>

 void main() {
   int k, j, cnt=0;
   long sum=0;

   for(k=1 ; k<=9 ; k++) {
      for(j=1; j<=9; j++) {
 if(j!=9)
    printf("%d*%d=%2d, ", k, j, k*j);
        else
    printf("%d*%d=%2d", k, j, k*j);
      }
   printf("\n");
   }
 }


▷ 구구단의 반복 횟수 및 합을 출력하는 프로그램으로 수정하세요.


>>>>> 출력하려는 구구단을 입력받는 프로그램


 #include <stdio.h>

 void main() {
   int s, e, i, j;

   printf("구구단의 시작수를 입력하세요 : ");
   scanf("%d", &s);
   printf("구구단의 끝수를 입력하세요 : ");
   scanf("%d", &e);
   for(i=s; i<=e; i++) {
      for(j=1; j<=9; j++) {
       if(j!=9)
   printf("%d*%d=%2d, ", i, j, i*j);
       else
          printf("%d*%d=%2d", i, j, i*j);
      }
   printf("\n");
   }
 }

Posted by 나비:D
:

▩ 연산자


1. 정수 연산자 원리
   정수/정수 = 정수
   정수/실수 = 실수
   실수/정수 = 실수
   실수/실수 = 실수

   - 작은 데이터 타입과 큰 데이터 타입의 경우 항상 작은 데이터 타입은 큰 데이터 타입으로 흡수

      된다.



>>>>> 기본 연산자


 #include <stdio.h>

 void main() {
   int a=10, b=3;

   printf("%d + %d = %d\n", a, b, a+b);
   printf("%d - %d = %d\n", a, b, a-b);
   printf("%d * %d = %d\n", a, b, a*b);
   printf("%d / %d = %d\n", a, b, a/b);

   //특수문자의 출력은 2번 연속해서 입력합니다.
   printf("%d %% %d = %d\n", a, b, a%b); 
 }




2. 증가/감소 연산자
   - 일반 2항연산자보다 처리속도가 빠릅니다.

   - ++a, a++의 개념
     a = a + 1;


   - --a, a--의 개념
     a = a - 1;


   - a = ++b;
     b = b + 1;
     a = b;


   - a = b--;
     a = b;    
     b = b - 1;



>>>>> 증가 연산자


 #include <stdio.h>

 void main() {
   int a=30, b=30;

   printf("원래 a의 값 : %d\n", a);
   printf("원래 b의 값 : %d\n", b);
   printf("++a의 결과 : %d\n", ++a);
   printf("++연산 후의 값 : %d\n", a);
   printf("b++의 결과 : %d\n", b++);
   printf("++연산 후의 값 : %d\n", b);
 }




>>>>> 감소 연산자


 #include <stdio.h>

 void main() {
   int a=30, b=30;

   printf("원래 a의 값 : %d\n", a);
   printf("원래 b의 값 : %d\n", b);
   printf("--a의 결과 : %d\n", --a);
   printf("--연산 후의 값 : %d\n", a);
   printf("b--의 결과 : %d\n", b--);
   printf("--연산 후의 값 : %d\n", b);
 }




>>>>> 상수에 대한 연산은 에러를 발생시킨다.


#include <stdio.h>
#include <conio.h>

 void main() {
   int a=10;

   printf("++(10)=%d\n", ++(10));
   getch();
 }




>>>>> 권장이 되지 않는 예제


//팀원간 소스분석에 지연 시간이 발생합니다.
//개발후 유지보수에 많은 시간이 소모됩니다.
//소스는 간결하고 분석이 용이해야 합니다.

#include <stdio.h>
#include <conio.h>

 void main() {
   int a=10;
   int b=10;

   printf("(++a - ++a)+(++b)=%d\n", (++a - ++a)+(++b));
   getch();
 }




3. 할당 연산자
   - +=, -=, *=, /=
   - 연산 속도의 증가가 사용 목적
   - a += b;
     a = a + b;
 


>>>>> 할당 연산자


 #include <stdio.h>

 void main() {
   int a=10, b=3;

   printf("원래 a의 값 : %d\n", a);
   printf("%d + %d의 값 : %d\n", a, b, a+=b);
   printf("변경된 a 값 : %d\n",a);
   printf("%d - %d의 값 : %d\n", a, b, a-=b);
   printf("변경된 a 값 : %d\n",a);
   printf("%d * %d의 값 : %d\n", a, b, a*=b);
   printf("변경된 a 값 : %d\n", a);
   printf("%d / %d의 값 : %d\n", a, b, a/=b);
   printf("변경된 a 값 : %d\n", a);
 }




4. 관계 연산자(비교 연산자)
   <, <=, >, >=, ==, !=
   - 관계 연산자는 참인 경우는 0 이외의 값, 기본 값은 1, 거짓인 경우는 0의 값이 리턴된다.
   - bool 타입이 없습니다.
     . 참: 0 이외의 모든 값은 참입니다. 따라서 -100도 참 입니다.
     . 거짓: 0만 거짓입니다.

 #include <stdio.h>

 void main() {
   int a=10, b=15;

   printf("%d > %d : %d\n", a, b, a>b);
   printf("%d >= %d : %d\n", a, b, a>=b);
   printf("%d < %d : %d\n", a, b, a<b);
   printf("%d <= %d : %d\n", a, b, a<=b);
   printf("%d == %d : %d\n", a, b, a==b);
   printf("%d != %d : %d\n", a, b, a!=b);
}




>>>>> 두개의 수를 입력받아 앞의 수가 크면 1, 그렇지 않으면 0을 출력하는 프로그램


 #include <stdio.h>

 void main() {
   int a, b;

   printf("첫번째 수를 입력하세요. : ");
   scanf("%d", &a);
   printf("두번째 수를 입력하세요. : ");
   scanf("%d", &b);
   printf("%d > %d의 결과는 %d입니다.\n", a, b, a>b);
 }




5. 논리 연산자
   !, &&, ||, &, |

>>>>>>>>>> 비트 and, or 연산자
#include <stdio.h>

main(){
 printf("10 | 3=%d\n", (10 | 3));
 printf("10 & 3=%d\n", (10 & 3));
}

/*
   0000 1010
  +0000 0011
  ----------
   0000 1011 --> 11


   0000 1010
  &0000 0011
  ----------
   0000 0010 --> 2
*/



>>>>>논리 연산자


 #include <stdio.h>

 void main() {
   int a=10, b=15, c=5, d=20;

   printf("%d>%d             => %d\n", a, b, a>b);
   printf("%d<%d             => %d\n", a, b, a<b);
   printf("%d<%d             => %d\n", c, d, c<d);
   printf("!(%d<%d)           => %d\n", c, d, !(c<d));
   printf("(%d>%d) && (%d<%d) => %d\n", a, b, c, d, (a>b)&&(c<d));
   printf("(%d>%d) || (%d<%d) => %d\n", a, b, c, d, (a>b)||(c<d));
   printf("(%d<%d) && (%d<%d) => %d\n", a, b, c, d, (a<b)&&(c<d));
   printf("(%d<%d) || (%d<%d) => %d\n", a, b, c, d, (a<b)||(c<d));
   printf("!(0)=> %d\n", !(0));
   printf("!(1)=> %d\n", !(1));
   printf("!(-100)=> %d\n", !(-100));
 }




 >>>>> 비트 연산자


#include <stdio.h>

 void main() {
   int a=0XD1, b=0XC4;

   printf("%X        => %d\n", a, a);
   printf("~%X       => %X\n", a, ~a);
   printf("%X        => %d\n", b, b);
   printf("~%X       => %X\n", b, ~b);
   printf("%X & %X => %X\n", a, b, a&b);
   printf("%X | %X => %X\n", a, b, a|b);
   printf("%X ^ %X => %X\n", a, b, a^b);
 }
 /*
  11010001
& 11000100
----------
  00010101 ==> 21 ==> 15
               10진수 16진수
 */




 >>>>> 이동연산자


- 왼쪽으로의 이동은 무조건 2배합니다.
- 오른쪽으로의 이동은 무조건 나누기2합니다.
- 2진수는 자리이동에따라 2배가 되던지, 그렇지 않으면 나누기 2배가 됩니다.

  0000 1000 ---> 8
  0001 0000 ---> 16
  0010 0000 ---> 32
 


  #include <stdio.h>

 void main() {
   int a=0XD1, b=0XC4;

   printf("원래의 값 : 10진수(%d), 16진수(%X)\n", a, a);
   printf("1번 왼쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", a << 1, a << 1);
   printf("2번 왼쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", a << 2, a << 2);
   printf("3번 왼쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", a << 3, a << 3);
   printf("4번 왼쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", a << 4, a << 4);
   printf("\n");
   printf("원래의 값 : 10진수(%d), 16진수(%X)\n", b, b);
   printf("1번 오른쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", b >> 1, b >> 1);
   printf("2번 오른쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", b >> 2, b >> 2);
   printf("3번 오른쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", b >> 3, b >> 3);
   printf("4번 오른쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", b >> 4, b >> 4);
 }

 /*
 0  0  0  0  0  0  0  0
 ----------------------
 12864 32 16 8  4  2  1
 */

Posted by 나비:D
:

▩ 변수의 이해 및 작성 규칙


1. 변수의 특징
   - 변수명은 영문자, 숫자, 밑줄(_) 문자만을 사용한다.
   - 변수명의 첫 문자는 반드시 영문자나 밑줄 문자이어야 한다.

      숫자는 변수명의 첫자로 올 수 없다.
   - 첫 문자를 숫자로 시작하면 상수로 인식한다.
   - 용도가 지정되어 있는 예약어는 변수명으로 사용할 수 없다.
   - 변수명은 가급적 의미 있는 이름을 사용한다.
   - C언어는 대소문자를 구별함으로 변수명에 대소문자를 주의한다.
   - 변수나 메소드의 첫자는 소문자, 클래스는 대문자를 주로 사용한다.
   - 변수의 마디는 대문자를 사용하는 경우가 많다.



2. 변수의 작성 규칙
   - 헝가리언 표기법
     . 회사이름: cn, comName, _com_name

   - 스칼라 표기법
     . 첫자를 무조건 대문자로하는 의미있는 변수명을 줍니다.
     . 회사이름: CompanyName, CompanyArea




>>>>> 상수를 이용하여 합, 차, 곱을 계산한 경우


 #include <stdio.h>

 void main() {
   printf("%d와 %d의 합은 %d입니다.\n", 30, 15, 30+15);
   printf("%d와 %d의 차는 %d입니다.\n", 30, 15, 30-15);
   printf("%d와 %d의 곱은 %d입니다.\n", 30, 15, 30*15);
 }




▩ 상수(리터럴)


   - 변수의 값 자체를 말합니다.
   - 숫자 상수: 10
   - 문자 상수: 'a'
   - 문자열 상수: "ABCDE"





>>>>> 간단한 성적처리 프로그램(정확한 소수 출력하도록 수정할 것)


- 변수를 사용하지 않으면 입력을 받을 수 없습니다.
- 정수/정수 = 정수가 됨으로 (float)정수/정수으로 변경하여 처리합니다.
  
 #include <stdio.h>

 void main() {
   char name[30];
   int hak;
   int kor;
   int eng;
   int mat;
   int tot;
   float ave;

   printf("정보를 입력하세요.\n\n");
   printf("이름을 입력하세요 : ");
   scanf("%s", name);
   printf("학번을 입력하세요 : ");
   scanf("%d", &hak);
   printf("국어점수를 입력하세요 : ");
   scanf("%d", &kor);
   printf("영어점수를 입력하세요 : ");
   scanf("%d", &eng);
   printf("수학점수를 입력하세요 : ");
   scanf("%d", &mat);
   tot=kor+eng+mat;
   ave=tot/3;
   printf("이름 : %s\n", name);
   printf("학번 : %d\n", hak);
   printf("국어 : %d\n", kor);
   printf("영어 : %d\n", eng);
   printf("수학 : %d\n", mat);
   printf("합계 : %d\n", tot);
   printf("평균 : %f", ave);
 }




>>>>> 변수의 초기화


- 변수에 미리 값을 할당하는 것을 초기화라고합니다.

 #include <stdio.h>

 void main() {
   char name[30]="Hong";
   int hak=3214;
   int kor=78;
   int eng=96;
   int mat=54;
   int tot=kor+eng+mat;
   float ave=tot/3;

   printf("이름 : %s\n", name);
   printf("학번 : %d\n", hak);
   printf("국어 : %d\n", kor);
   printf("영어 : %d\n", eng);
   printf("수학 : %d\n", mat);
   printf("합계 : %d\n", tot);
   printf("평균 : %f", ave);
 }




>>>>> 서로다른 형의 계산


- 작은 타입은 큰 변수 타입으로 흡수됩니다.
 
 #include <stdio.h>

 void main() {
   char c = 'T';
   int i = 10;
   float f = 20.1;

   printf("%c+%d = %d\n", c, i, c+i);
   printf("%d+%f = %f", i, f, f+i);
 }




>>>>> cast연산의 사용 1


 #include <stdio.h>

 void main() {
   int i = 10, j = 20;
   float f = 30.1;

   printf("%d+%f = %f\n", i, f, f+i);
   printf("%d+%f = %d\n", i, f, (int)f+i);
   printf("%d+%d = %f\n", i, j, (float)i+j);
 }




>>>>> cast 연산의 사용 2


 #include <stdio.h>

 void main() {
   char c = 'A';
   int i = 10;
   float f = 3.2;

   printf("(int)(c+i+f)의 결과 : %d\n", (int)(c+i+f));
   printf("(c+i+f)의 결과 : %f\n", c+i+f);
   printf("(int)f*i-2의 결과 : %d\n", (int)f*i-2);
   printf("f*i-2의 결과 : %f\n", f*i-2);
 }

Posted by 나비:D
:

▩ 자료형의 종류
 

- 하드웨어의 제한된 CPU Resource와 Memory 때문에 데이터 타입을 정확하게 지정을 해야 메모

  리와 프로세서의 낭비를 줄일 수 있습니다.


1. 자료형의 종류

   - 기본형-문자형     크기      기억되는 값의 범위
     . char                1 Byte    -128 ~ 127

     ※ 바이트 분리의 원리

        0000 0000 ---> 0
        0000 0001 ---> 1
        ~
        ~
        0111 1111 --->  127 

                               OS는 지정된 데이터크기의 첫비트가 0이면 양수, 1이면 음수로 처리합니다.
        1000 0000 ---> -128  첫비트가 1임으로 음수로 처리됩니다.
        1000 0001 ---> -127
        1000 0010 ---> -126
        1000 0011 ---> -125
        ~
        ~
        1111 1111 ---> -1
        0000 0000 ---> 0



     . unsigned char   1 Byte    0 ~ 255

   - 기본형-정수형     크기      기억되는 값의 범위
     . short           2 Byte    -32768 ~ 32767
     . unsigned short  2 Byte    0 ~ 65535
     . int             2,4 Byte  -32768 ~ +32767, -2147483648 ~ 2147483647
     . unsigned int    2,4 Byte  0 ~ 65535, 0 ~ 4294967295
     . long            4 Byte    -2147483648 ~ 2147483647
     . unsigned long   4 Byte    0 ~ 4294967295
 
   - 기본형-실수형     크기      기억되는 값의 범위
     . float           4 Byte    3.4e-38 ~ 3.4e38
     . double          8 Byte    1.7e-308 ~ 1.7e308
     . long double     10 Byte   3.4e-4932 ~ 3.4e4932
  
   - 기본형-나열형
     . enum            enum{sero, one, two, three, four} a, b

   - 기본형-무치형
     . void

   - 합성형-배열형
     . int a[5]

   - 포인터형 int *ptr
  
   - 구조체형   struct

   - 공용체형   union




2. 최대 최소값의 연산

   컴퓨터                    사람
============================
  01111111 11111111 =  32767
+                        1
-------------------
  10000000 00000000 = -32768


   컴퓨터                    사람
============================
  10000000 00000000 = -32768
-                        1
-------------------
  01111111 11111111 =  32767



>>>>> 관련 예제


#include <stdio.h>
#include <conio.h>

void main() {
    char k;  //-128 ~ +127

    k=127; printf("k=%d", k); //127
    printf("\n");

    //127+1: const int
    k=127+1; printf("k=%d", k); //-128
    printf("\n");

    //-128 + (255-128) = -1, 11111111
    k=255; printf("k=%d", k); //-1
    printf("\n");

    //11111111 + 1 = 00000000
    k=256; printf("k=%d", k); //0

}




>>>>> sizeof()함수의 사용


 #include <stdio.h>

 void main() {
   char c;
   int i;
   long l;
   unsigned int ui;
   unsigned long ul;
   float f;
   double d;

   printf("c형의 크기는 %d바이트입니다.\n", sizeof(c));
   printf("int형의 크기는 %d바이트입니다.\n", sizeof(i));
   printf("long형의 크기는 %d바이트입니다.\n", sizeof(l));
   printf("unsigned int형의 크기는 %d바이트입니다.\n", sizeof(ui));
   printf("unsigned long형의 크기는 %d바이트입니다.\n", sizeof(ul));
   printf("float형의 크기는 %d바이트입니다.\n", sizeof(f));
   printf("double형의 크기는 %d바이트입니다.\n", sizeof(d));
  
   printf("\n상수의 데이터사이즈\n");
  
   printf("a문자의 크기 %d입니다.\n", sizeof('a'));  //1
   printf("b문자의 크기 %d입니다.\n", sizeof('b'));  //1

   //'a', 'b', '\0'
   printf("ab문자의 크기 %d입니다.\n", sizeof("ab"));//3
   printf("abcd의 크기 %d입니다.\n", sizeof("abcd"));//5
   printf("10의 크기 %d입니다.\n", sizeof(10));      //4

   printf("10.5의 크기 %d입니다.\n", sizeof(10.5));  //8
   printf("10.5의 크기 %d입니다.\n", sizeof(10.5f)); //4
 }




3. %d의 출력(#은 공백을 의미)
   - 123일경우
      %d: 123
     %7d: ####123
     %7d: ###1234
     %7d: ##12345



4. %f의 출력
   - %10.3f 처럼 사용
   - 소수 자릿수 지정시 자동 반올림
   - 전체 자리수가 많으면 왼쪽 부분이 공백으로 채워짐

   - 데이터가 123.456일경우의 출력결과
     %7.3f : 123.456
     %8.3f : #123.456
     %8.4f : 123.4560
     %8.2f : ##123.46 <-- 자리올림 발생
     %2.1f : 123.5    <-- 전체자리수 보다작은 자리수는 사용하지 말것
     %.1f  : 123.5    
     %8.0f :      123 <-- 정수만 나옴




>>>>> 실수형의 출력


 #include <stdio.h>

 void main() {
   float f=256.124;
   float g=256.0;
   float h=256;

   printf("%f\n", f);
   printf("%7.3f\n", f);
   printf("%f\n", g); //소수이하 무조건 6자리가 출력됨
   printf("%f\n", h);
 }




>>>>> 소수자리가 6자리가 넘는 경우의 출력


- float형의 경우 소수이하 5자리까지만 정확도가 유지됩니다.
 
#include <stdio.h>
#include <conio.h>

 void main() {
   float k=120.12345678;
   double dk=120.12345678;

   printf("값은: %12.6f\n", k); //120.123459
   printf("값은: %12.7f\n", k); //120.1234589
   printf("값은: %12.8f\n", k); //120.12345886
   printf("\n");
   printf("값은: %12.6f\n", dk);//120.123457
   printf("값은: %12.7f\n", dk);//120.1234568
   printf("값은: %12.8f\n", dk);//120.12345678

   getch();
 }




>>>>> 데이터의 역순으로 출력


- 숫자는 정렬이 오른쪽 기준입니다.
- 문자는 왼쪽 정렬입니다.

#include <stdio.h>
#include <conio.h>

void main() {
  float f=256.124;
  float g=256.0;
  float h=256;

  printf("%-f\n", f);
  printf("%-10.3f\n", f);
  printf("%-10.3f\n", g);
  printf("%10.3f\n", h);
  getch();
}




5. %e의 출력
   - 정수 한자리만 남기고 전부 소수화 시킨다.



>>>>> 지수 형태의 출력


 #include <stdio.h>

 void main() {
   float f=256.124;
   float g=256.0;
   float h=256;

   printf("%e\n", f);
   printf("%e\n", g);
   printf("%e\n", h);
 }




6. %c: 문자의 출력



>>>>> 아스키코드의 출력


 #include <stdio.h>

 void main() {
   char c;

   printf("임의의 문자를 입력하세요 : ");
   scanf("%c", &c);
   printf("입력한 문자 : %c\n", c);
   printf("아스키 코드 : %d\n", c);
 }




>>>>> 문자형식의 연산


 #include <stdio.h>

 void main() {
   char c='c';
  
   printf("원래 문자는 %c입니다.\n", c);
   printf("%c의 다음 문자는 %c입니다.\n", c, c+1);
   printf("%c의 이전 문자는 %c입니다.\n", c, c-1);
   printf("%c의 대문자는 %c입니다.\n", c, c-32);
 }




7. %s: 문자열의 입/출력



>>>>> 문자열의 입력


 #include <stdio.h>

 void main() {
   char name[30], depart[30];

   printf("이름을 입력하세요 : ");
   scanf("%s", name);
   printf("학과를 입력하세요 : ");
   scanf("%s", depart);
   printf("당신의 이름은 %s입니다.\n", name);
   printf("당신의 학과는 %s입니다.", depart);
 }




>>>>> 문자열 입출력


 #include <stdio.h>

 void main() {
   char frt[30];
   int dan, num;

   printf("품목을 입력하세요. ");
   scanf("%s", frt);
   printf("판매단가를 입력하세요. ");
   scanf("%d", &dan);
   printf("판매수량을 입력하세요. ");
   scanf("%d", &num);
   printf("\n");
   printf("   ** 품목별 판매 현황 **\n");
   printf("=============================\n");
   printf("품목\t단가\t수량\t금액\n");
   printf("-----------------------------\n");
   printf("%s\t%d\t%d\t%d\n", frt, dan, num, dan*num);
   printf("-----------------------------\n");
 }

Posted by 나비:D
:

▩ 자료의 입력
 
1. scanf()
   - scanf("제어문자", &변수);: 키보드에서 값을 입력받아 제어문자의 형식으로 변수에 저장한다.



>>>>> 두 수를 입력받아 합을 구하기


 #include <stdio.h>

 void main() {
   int a, b;

   printf("첫번째 숫자를 입력하세요 : ");
   scanf("%d", &a);
   printf("두번째 숫자를 입력하세요 : ");
   scanf("%d", &b);
   printf("%d와 %d의 합은 %d입니다.", a, b, a+b);
 }




>>>>> 10진수를 입력받아 16진수로 출력


 #include <stdio.h>

 void main() {
   int i;

   printf("10진수의 숫자를 입력하세요 : ");
   scanf("%d", &i);
   printf("%d의 16진수는 %X입니다.", i, i);
 
   printf("\n\n");

   printf("16진수의 숫자를 입력하세요 : ");
   scanf("%x", &i);
   printf("%x의 10진수는 %d입니다.", i, i);
 }




>>>>> scanf함수로 한문자 입력 받기


 #include <stdio.h>

 void main() {
   char c;

   printf("한 문자를 입력하세요. ");
   scanf("%c", &c);
   printf("입력된 문자는 %c입니다.");
   putchar(c);
 }



  
UP!!!▷ 국어, 영어 과목의 점수를 입력받아 총점과 평균을 구하는 프로그램을 작성하세요.
 #include <stdio.h>

 void main() {
   int kuk;
   int eng;
   int tot;
   int avg;

   printf("국어 점수를 입력하세요. ");
   scanf("%d", &kuk);

   printf("영어 점수를 입력하세요. ");
   scanf("%d", &eng);

   tot = kuk+eng;
   avg = tot / 2;

   printf("총점:%d 평균:%d\n", tot, avg);
 }




2. getchar()
   - 입력받은 문자를 화면에 출력하고 Enter를 눌러야 진행한다.
   - 키보드에서 입력된 문자를 버퍼에 저장한후 처리한다.
   - getchar() 함수는 항상 입력 버퍼를 검사하며 문자가 있으면 거기서 한 문자를 가져오고, 없으

      면 문자를 콘솔창에서 입력을 받습니다.
   - 'Enter'도 한문자로 처리합니다.
   - scanf() 함수도 같은 원리를 가지고 있습니다.

  


>>>>> 버퍼 사용을 확인하는 입력 예제 getchar()


#include <stdio.h>

void main(){
 char c;

 printf("한 문자를 입력하세요.");

 c=getchar();
 printf("1문자 %c입니다.\n", c);

 c=getchar();
 printf("2문자 %c입니다.\n", c);

 c=getchar();
 printf("3문자 %c입니다.\n", c);

}




>>>>> 버퍼 사용을 확인하는 입력 예제 scanf()


#include <stdio.h>

void main(){
 char c;

 printf("한 문자를 입력하세요.");

 scanf("%c", &c);

 printf("입력된 문자는 %c입니다.\n", c);

 printf("\n");

 scanf("%c", &c);

 printf("입력된 문자는 %c입니다.\n", c);
 putchar(c);
}




3. getch()
   - 프로그램의 진행중 잠시 메세지를 출력하거나 멈춤을 지정할 때 많이 사용한다.
   - 엔터키를 누르지 않아도 진행한다.



>>>>> getch()함수의 이용


 #include <stdio.h>

 void main() {
    char c;

    printf("한 문자를 입력하세요. ");
    c=getch();
    printf("\n입력된 문자는 %c입니다.", c);
   
    printf("한 문자를 입력하세요. ");
 c=getch();
    printf("\n입력된 문자는 %c입니다.", c);
 }




4. 함수 도움말 보기(MSDN 설치)
    - F1, Ctrl + F1




5. 한문자의 입출력 : getchar, putchar
   - getchar의 입력은 반드시 int형 변수를 사용한다.
   - 버퍼로 처리 된다.
   - getchar함수는 입력 종료를 검출하면 -1, EOF를 표시한다.




6. 한 행의 입출력 : gets, puts
   - 문자열은 char의 배열(문자의 배열)이다.
   - gets() 는 엔터를 누를 때까지 입력을 받는다.
   - puts() 는 출력을 하고 개행을 한다.
   - 입력 종료는 null을 검사한다.




7. 변환문자를 통한 입력 함수: scanf(입력 종료는 EOF를 검사한다.)
   - %o   : int            <-- 8진수로 입력
   - %d   : int            <-- 10진수로 입력
   - %ld  : long int, int  <-- 긴 정수형 10진수 입력
   - %x   : int            <-- 16진수 입력
   - %f   : float          <-- 실수 입력
   - %lf  : double         <-- double형 실수 입력
   - %c   : char, int      <-- 한 문자 입력
   - %s   : char *, 배열   <-- 문자열, 배열 입력

Posted by 나비:D
:

▩ C언어 프로그램의 구조


1. C언어 프로그램의 구조와 개행

#include <stdio.h>

void main(){
    printf("abc");
    printf("def\n");
    printf("123\n456\n789\n");
}

/*
abcdef
123
456
789
*/



▩ 자료 출력하기


1. 확장 문자의 이해
   - '\a': 경보음  07
   - '\n': 개행    0A
   - '\t': 탭 코드 09
   - '\000': 8진수
   - '\xhh': 16진수
   - '\0' : 문자 코드 0, null 문자



>>>>> 확장(제어)문자의 사용
 #include <stdio.h>

 void main() {
   printf("\t** 월별 판매 결과 **\n");
   printf("====================================\n");
   printf("품목\t서울\t부산\t광주\t인천\n");
   printf("------------------------------------\n");
   printf("사과\t50\t40\t35\t60\n");
   printf("귤\t60\t80\t75\t35\n");
   printf("배\t55\t44\t33\t77\n");
   printf("------------------------------------\n");
 }




2. 아스키 코드표의 이해
   - 7비트 코드
   - 키보드의 자판은 아스키코드로 대응됨
   - 8번째 비트가 1인경우 한글을 처리하는 로직을 구성 할 수 있음




3. TAB 키의 작동의 이해
   - 탭은 절대 좌표를 사용하며 탭사이즈의 배수 + 1의 위치로 이동함
   - 일반적으로 사이즈는 4를 이용합니다.

123456789012345678901234567890
100            1000
10              100
1               1
1,000          5,000
3,500          3,000




4. 문자열 출력 및 제어 문자 출력하기
   - printf()
     . %d   : 10진 정수 출력
     . %4d  : 출력시 자리수를 지정함 숫자의 크기와 관련 없이 무조건 4자리의 공간을 확보함
                 자리수가 부족해도 정수 부분은 그대로 출력된다. 숫자는 오른쪽 정렬됩니다.
     . %4f  : 실수 출력, 정수 부분이 출력되고 소수는 무조건 6자까지 출력됨
     . %4.0f: 소수점은 출력되지 않음
     . %4.1f: 소수 자릿수 부족시 반올림 실행, 소수점도 자리수에 해당, 정수는 자리수에 관련 없이

                 무조건 출력됨, 정수2자리, 실수1자리
     . %o   : 8진수 출력, 영문 소문자 'o'만 가능
     . %x   : 16진수 출력, %X는 16진수가 대문자로 출력됨


   - putchar() 함수의 사용
     . 한문자를 출력합니다.
     . '': 한문자를 의미
     . "": 문자열을 의미, 실제 보이는 문자보다 null문자가 한자 더 있음('\0')




>>>>> 제어 문자를 통한 출력


 #include <stdio.h>

 void main() {
   int a=5, b=9, c=1235, d=1;
   int e=40, f=549, g=5, h=1160;
   int i=155, j=1249, k=3, m=10;
   float q=12.24f, w=45.265f, r=814.32f, t=369.254f;

   printf("\t** 월별 판매 결과 **\n");
   printf("======================================\n");
   printf("품목\t서울\t부산\t광주\t인천\n");
   printf("--------------------------------------\n");
   printf("사과\t%4d\t%4d\t%4d\t%4d\n", a, b, c, d);
   printf("귤\t%4d\t%4d\t%4d\t%4d\n", e, f,g, h);
   printf("배\t%4d\t%4d\t%4d\t%4d\n", i, j, k, m);
   printf("--------------------------------------\n");
   printf("금액\t%4.1f\t%4.1f\t%4.1f\t%4.1f\n", q, w, r, t);
   printf("--------------------------------------\n");
 }




5. 변환문자를 통한 출력 함수: printf(변환 문자열 목록)
   - %o      : int            <-- 8진수로 출력
   - %d      : int            <-- 10진수로 출력
   - %ld     : long int, int  <-- 긴 정수형 10진수 출력
   - %x, %X  : int            <-- 16진수 출력, 대소문자 구분 출력
   - %f      : float, double  <-- 실수 출력, 9.f는 반올림이 되어 출력이 됨

                                          소수점은 자리수로 포함이 됨
   - %e, %E  : float, double  <-- 실수를 지수 형식으로 출력, 1.234560e+03, 1.234560e-03
   - %c      : char, int      <-- 한 문자 출력
   - %s      : char *, 배열   <-- 문자열, 배열 출력




>>>>> 진수 변환하여 출력하기


#include <stdio.h>

 void main() {
   int a=511;

   printf("원래의 값은 %d입니다.\n", a);
   printf("8진수의 값은 %o입니다.\n", a);
   printf("16진수의 값은 %X입니다.\n", a);
   printf("1을 더한 값은 %d입니다.\n", a+1);
   printf("8진수의 값은 %o입니다.\n", a+1);
   printf("16진수의 값은 %X입니다.\n", a+1);
   printf("2를 더한 값은 %d입니다.\n", a+2);
   printf("8진수의 값은 %o입니다.\n", a+2);
   printf("16진수의 값은 %X입니다.\n", a+2);
 }

 /*
 10 Base   2 Base   8 Base   16 Base
 -------------------------------------
 0            0        0         0
 1            1        1         1
 2           10        2         2
 3           11        3         3
 4          100        4         4
 5          101        5         5
 6          110        6         6
 7          111        7         7
 8         1000       10         8
 9         1001       11         9
 10        1010       12         A
 11        1011       13         B
 12        1100       14         C
 13        1101       15         D
 14        1110       16         E
 15        1111       17         F
 16       10000       20        10
 
*/




>>>>> 단일문자의 출력


 #include <stdio.h>

 void main() {
   putchar('K');
   putchar('o');
   putchar('r');
   putchar('e');
   putchar('a');
   printf("\n");
   putchar('S');
   putchar('e');
   putchar('o');
   putchar('u');
   putchar('l');
   printf("\n");
 }

Posted by 나비:D
:

▩ C, C++언어의 이해


1. 교육 효과와 방향
   - 메모리에 대한 이해
   - 함수에 대한 이해
   - 포인터에 대한 이해
   - 제어문에 대한 이해




2. 프로그래밍 언어 별 특징
   - C
     . 함수 기반 언어, 배우기 쉽고 구현이 쉽습니다.
     . 프로그램이 커지면 설계가 어렵고 유지보수가 어려워 요즘은 C++ 로 전향되는 경우도 많이

       있습니다.

   - C++
     . C의 특징을 전부 가지고 있습니다. 객체지향의 기술을 구현 할 수 있습니다.
     . 모듈을 객체의 형태로 구현함으로 정확한 설계만 된다면 견고하고 유지보수가 좋은 프로그램

       개발할 수 있습니다.
     . 모든 개발자가 객체지향에 대한 개념이 있어야 개발이 가능합니다.

   - VC++
     . C, C++, Windows 개념

   - VB, Powerbuilder
     . DB 프로그램 제작




3. C 언어의 역사
   - ALG --> CPL --> BCPL --> B --> C --> C++ --> Visual C++ --> C#, Visual C++.net
   - C언어는 1972년 미국의 AT&T Bell 연구소에 근무하는 Dennis Ritchie와 Ken Thompson이 마

     로 컴퓨터 수준의 새로운
     운영체제인 Unix를 개발하던 과정에서 프로그래밍 개발을 위한 도구의 필요성을 느껴 처음 만

     졌다.




4. C 언어의 특징
   - C언어는 중급 기능의 언어이다. Assembler -- C -- Visual Basic
   - C언어는 구조화된 언어이다. 함수의 이용
   - C언어는 Assembly언어에 비하여 문법이 유연하고, 다른 운영체제에 이식하기 쉬우며, 개발 속

     훨씬 빠르다.
   - C언어는 절차 지향언어이다. 따라서 실행 순서가 매우 중요하다.
   - 대소문자를 구별한다.
   - 코드양을 줄이기 위한 다양한 방법이 있다.
   - 증가, 대입, 조건, 비트, 감소, 컴마, 포인터등 연산자가 풍부하다.
   - 포인터의 이용으로 메모리를 세밀하게 프로그래밍 할 수 있다.
   - char, int, float, double, signed, unsigned, long, short, 구조체, 공용체, const, register, 형등

      이터형 다양   
   - 최소한 1개 이상의 함수로 구성된다. (main())
   - if, for, while, do, switch, break, continue등 구조화 제어문이 갖추어져있다.
   - 컴파일에 앞서 텍스트레벨의 프리프로세서를 지원한다.
   - C자체 입출력 기능은 없음으로 외부함수로 지원한다.
   - TAB과 같은 확장 문자열의 표현이 가능하다.
   - 함수의 프로토타입을 선언하여 프로그램 작성을 효율적으로 하게 해준다.




5. C++언어의 특징
   - C언어의 특징에 OOP(객체지향)개념을 도입한 언어
   - 클래스란 개념이 도입되었으며 C언어의 구조체의 발전형이다. 구조체처럼 데이터만 가지고 있

      것이 아니라 메소드도 포함하고 있는 단 C++의 변종 구조체는 메소드도 포함한다.
   - 객체라는 개념이 추가되었으며 클래스의 복제판으로 메모리에 저장된다.
   - 연산자 중복기능, 함수 중복 기능, 상속 기능을 가지고 있다.
  


6. 컴파일 과정

      Compiler                Linker -- Library
               ↓                       ↓
   cpp ------------> obj ------------> EXE
   소스파일               기계어 파일          실행파일

Posted by 나비:D
:

BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
---------------------------.. (0)
나비의삽질 (5)
Application (177)
C# (28)
JAVA (22)
ASP.NET (3)
C++ (19)
C (18)
.NET (0)
Visual Basic (12)
Flex (16)
Eclipse (8)
Delphi (16)
Visual Studio 2005 (5)
Embed (6)
Linux (2)
Mobile (1)
XML (1)
안드로이드 (2)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

달력

«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Total :
Today : Yesterday :