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

[b]1-6 验证 getchar() != EOF 的值是 0 还是 1.[/b]



#include <stdio.h>

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

return 0;
}


[quote]
[i][b]中文怎么了[/b][/i]
getchar() != EOF is: 1
Process returned 0 (0x0) execution time : 11.685 s
[/quote]

* [i][b]中文怎么了[/b][/i] 为输入内容


[b]1-7 编写一个打印 EOF 值得程序[/b]



#include <stdio.h>

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

return 0;
}


[quote]
EOF is: -1
Process returned 0 (0x0) execution time : 0.015 s
[/quote]


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



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

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

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

return 0;
}


[quote]
[i][b]HELLO HELLO HELLO HELLO HELLO
ASSSSS
AASADASD
asdasdadasd
^Z[/b][/i]
n = 8
Process returned 0 (0x0) execution time : 28.280 s
[/quote]


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



#include <stdio.h>

int
main()
{
int c, p;

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

p = c;
}

return 0;
}


[quote]
[i][b] H E L L O[/b][/i]
[u] H E L L O[/u]
[i][b]^Z[/b][/i]

Process returned 0 (0x0) execution time : 25.480 s
[/quote]
* 加了个下划线, 直接 quote 第一个空格不显示


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


:cry:

/*
* 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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值