手抄代码1-8

1-8

统计文本各种字符的数目,字符集属于整型的子集合,

#include <stdio.h>
main()
{
    int c, nb, nt, nl;
    nb = 0;
    nt = 0;
    nl = 0;
    while ((c=getchar()) != EOF) {
        if (c ==  ' ') {
            nb++;
        } else if(c == '\t'){
            nt++;
        }else if(c =='\n'){
             nl++;
        }
    }
    printf("%d %d %d\n", nb, nt, nl);
}

程序实现,当输入的字符与待定的值相同就累加一次。

1-9

删除多余空格的程序

#include <stdio.h>
#define NONBLANK 'a'
main()
{
    int c, lastc;
    lastc = NONBLANK;
    while ((c=getchar()) != EOF) {
        if (c !=  ' ')
            putchar(c);
        if (c == ' ')
            if(lastc != ' ')
                putchar(c);
        lastc = c;
    }
}

//另外一种实现

#include <stdio.h>
#define NONBLANK 'a'
main()
{
    int c, lastc;
    lastc = NONBLANK;
    while ((c=getchar()) != EOF) {
        if (c !=  ' ' || lastc != ' ')//因为lastc != ' ',已经确定上次输入非空格,
            putchar(c);
        lastc = c;
    }
}

实现原理, 把非空格的直接打印,并记录当前值b,输入值与b比较,都是空格则不打印。

1-10

替换并打印。

#include <stdio.h>
main()
{
    int c;
    while ((c=getchar()) != EOF) {
        if (c !=  '\t')
            printf("\\t");
        if (c == '\b')
            printf("\\b");
        if(lastc != '\\')
            printf("\\\\");
        if(c !='\b'&&c != '\t' && c != '\\')
            putchar(c);
    }
}

对于空白符的描述做了约定tab=='\t', spac==' ',=\当输入值与特殊值相同,则输出要替换的字符,否则原样输出。

1-11

程序思维,注意事项, 处理没有数据输入的情况,只有换行符,,只有空格,制表符,没有空格,首列就是单词。

1-12

将输入的单词每行打印一个。

#include <stdio.h>
#define IN 1
#define OUT 0
main()
{
    int c, state;
    state = OUT;
    while ((c = getchar()) != EOF) {
        if(c ==' ' || c == '\n' || c == '\t')
        {
             if(state = IN)
             {
                 putchar('\n');
                 state = OUT;
             }
        }
        else if(state == OUT)
        {
             state = IN;
             putchar(c);
        }else
            putchar(c);
    }
}

赋值单词外,判断输入是否空白字符,是空白,原先是否单词中,决定是否换行,输入非空字符,原先是否单词中,取反,并打印字符。

转载于:https://my.oschina.net/dengwo/blog/681272

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值