블로그 이미지
개발에 관한 것들.. 재만

카테고리

분류 전체보기 (66)
claztec's develop (1)
운영체제 (11)
프로그래밍 (41)
알고리즘 (0)
데이터베이스 (2)
소프트웨어공학 (3)
Books (2)
Total11,211
Today3
Yesterday9

'c'에 해당되는 글 6건

  1. 2008/11/12 거듭제곱 (power)
  2. 2008/11/12 digit count
  3. 2008/11/09 word counting (wc)
  4. 2008/11/09 character counting
  5. 2008/11/09 character input & output
  6. 2008/11/09 the c programming language
거듭제공을 하는 함수

#include <stdio.h>

int power(int m, int i);

main()
{
    int i;

    for (i = 0; i < 10; ++i)
        printf("%d %d %d\n", i, power(2,i), power(-3,i));
    return 0;
}

int power(int base, int n)
{
    int i, p;

    p = 1;
    for (i = 1; i <= n; ++i)
        p = p * base;
    return p;
}

A function definition has this form :
return -type function-name (parameter declarations, if any)
{
   declarations
   statements
}

함수 사용...
함수를 정의가 main 밑에 있으면 main위에 함수를 선언해 줘야 한다.
저작자 표시 비영리 변경 금지
Posted by 재만
TAG c

digit count

프로그래밍/C / 2008/11/12 21:52
digit count
0~9, 공백, 그외 문자 총 12개의 digit를 세는 프로그램

#include <stdio.h>

main()
{
    int c, i, nwhite, nother;
    int ndigit[10];

    nwhite = nother = 0;
    for (i = 0; i < 10; ++i)
        ndigit[i] = 0;

    while ((c = getchar()) != EOF)
        if (c >= '0' && c <= '9')
            ++ndigit[c-'0'];
        else if (c == ' ' || c == '\n' || c == '\t')
            ++nwhite;
        else
            ++nother;

    printf("digits = ");
    for (i = 0; i < 10; ++i)
        printf(" %d", ndigit[i]);
    printf(", white space = %d, other = %d\n",
            nwhite, nother);
}

EOF까지 입력을 받으면서 해당 문자의 범위를 비교해서 카운트 하는 것이다.
배열을 선언하고 사용하는부분이 중요한것 같다.

새로운 것은 ++ndigit[c-'0']; 부분인데 c-'0'를 함으로써 문자를 숫자로 변환시켰다.


저작자 표시 비영리 변경 금지
Posted by 재만
TAG c
단어를 새는 프로그램.
유닉스 명령어로 wc를 구현한 프로그램.

#include <stdio.h>
#define        IN    1
#define        OUT    0

main()
{
    int c, nl, nw, nc, state;

    state = OUT;
    nl = nw = nc = 0;

    while ((c = getchar()) != EOF) {
        ++nc;
        if (c == '\n')
            ++nl;
        if (c == ' ' || c == '\n' || c == '\t')
            state = OUT;
        else if (state == OUT) {
            state = IN;
            ++nw;
        }
    }
    printf("%d %d %d\n", nl, nw, nc);
}

라인수 계산할때 자주사용하는 wc가 이렇게 간단하게 되어 있었다니...
OUT과 IN 이 헷갈릴 수 있을 것 같다.
일단 OUT부터 선언한다. 그래야 마지막 if에서 IN으로 바뀌고 nw(new word)가 ++될 수 있다.
이후 단어의 끝을 나타내는 ' ', \n, \t의 경우 OUT으로 변경된다.



저작자 표시 비영리 변경 금지
Posted by 재만
TAG c
문자를 입력받았을 경우 개수를 새는 프로그램

방법 1.
#include <stdio.h>

main()
{
    long nc;

    nc = 0;
    while (getchar() != EOF)
        ++nc;
    printf("%ld\n", nc);
}

long 은 int보다 크거나 같다. (32bit 이상)
prinft에는 %ld로 표시해 줘야 한다. (LD)
++nc는 prefix로 먼저 1 증가 시킨다. 반대는 nc++로 postfix다.

방법 2.
#include <stdio.h>

main()
{
    double nc;

    for (nc = 0; getchar() != EOF; ++nc)
        ;
    printf("%.0f\n", nc);
}

for loop에서 아무것도 하지 않는다면 ; 만 넣어주면 된다.
%.0f 는 float와 double을 표현할때 사용할 수 있고, 정수와 소수를 다룰 수 있다. 0f는 소수부분을 표현하지 않는것이다. 따라서 정수만 표현된다.

저작자 표시 비영리 변경 금지
Posted by 재만
TAG c
문자 입출력 예제
echo 서버처럼 입력하는데로 출력이 된다.
ctrl + d 나 ctrl + c 로 종료할 수 있다.

#include <stdio.h>

main()
{
    int c;

    while ( (c = getchar()) != EOF) {
        putchar(c);
    }
}

책에서 변수 c를 integer로 하였는데, 변수 c에 type을 int가 아닌 char로 해도 별 상관은 없다.
저작자 표시 비영리 변경 금지
Posted by 재만
TAG c

the c programming language

Books / 2008/11/09 13:28
C 언어프로그래밍 2판 (THE C PROGRAMMING LANGAGE)
카테고리 컴퓨터/IT
지은이 BRIAN W.KERNIGHAN 외 (대영사, 2002년)
상세보기

프로그래밍 바이블 중에 가장 얇은 바이블이라는 the c programming language.
원서를 27,000원에 비트 컴퓨터 지하에 있는 신한전문서적에서 구입하였다.

강컴보다 싼것도 있고, 같은 가격인것도 있다. 더 비싼 것도 있구(사이텍미디어 책은 10% 할인) 포인트 적립이 안된다. 하지만 직접 책을 보고 구입을 할 수 있다는 것이 가장 큰 장점이다.

다시 책으로 돌아와서 책 분량이 272페이지로 어느 프로그래밍 책보다도 얇다.
오늘 책보고, 예제 따라하며 놀아야 겠다.

저작자 표시 비영리 변경 금지
Posted by 재만

최근에 달린 댓글

최근에 받은 트랙백

글 보관함