`
ninghuan
  • 浏览: 9084 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

<THE C PROGRAMMING LANGUAGE> 练习 第一章 (1-6 -- 1-10)

    博客分类:
  • C
阅读更多
1-6 验证 getchar() != EOF 的值是 0 还是 1.


#include <stdio.h>

int
main()
{
    printf("getchar() != EOF is: %d", (getchar() != EOF));

    return 0;
}


引用

中文怎么了
getchar() != EOF is: 1
Process returned 0 (0x0)   execution time : 11.685 s


* 中文怎么了 为输入内容



1-7 编写一个打印 EOF 值得程序


#include <stdio.h>

int
main()
{
    printf("EOF is: %d", EOF);

    return 0;
}


引用

EOF is: -1
Process returned 0 (0x0)   execution time : 0.015 s




1-8 编写一个统计空格, 制表符与换行符个数的程序.


int
main()
{
    int c, n = 0;

    while ((c = getchar()) != EOF) {
        if (c == '\n' || c == ' ' || c == '\t') {
            n++;
        }
    }

    printf("n = %d", n);

    return 0;
}


引用

HELLO HELLO HELLO HELLO HELLO
ASSSSS
AASADASD
asdasdadasd
^Z

n = 8
Process returned 0 (0x0)   execution time : 28.280 s




1-9  编写一个将输入复制到输出的程序, 并将其中连续的多个空格用一个空格代替.



#include <stdio.h>

int
main()
{
    int c, p;

    while ((c = getchar()) != EOF) {
        if (c != ' ' || (p != ' ')) {
            putchar(c);
        }

        p = c;
    }

    return 0;
}


引用

   H    E     L  L  O
H E L L O
^Z

Process returned 0 (0x0)   execution time : 25.480 s

* 加了个下划线, 直接 quote 第一个空格不显示



1-10 编写一个将输入复制到输出的程序, 并将其中的制表符替换为 \t, 把回退符替换为 \b, 把反斜杠替换为 \\. 这样可以将制表符和回退符以可见的方式显示出来.(未解决)



/*
*  TODO
*  我做不出来, getchar() 居然要等一个回车, 难道我记错了?
*/

#include <stdio.h>

int
main()
{
    int c;

    /* c = getchar() 不加括号编译会有警告 */
    while ((c = getchar())) {

        /* 意义不大, 为了让程序在收到 EOF 可以退出 */
        if (c == EOF) {
            return 0;
        }

        if (c == '\t') {
            printf("\\t");
        } else if (c == '\b') {
            printf("\\b");
        } else if (c == '\\') {
            printf("\\\\");
        } else {
            putchar(c);
        }
    }

    return 0;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics