zoukankan      html  css  js  c++  java
  • c语言:计算输入字符个数

    近日再看《c语言程序设计第二版》,做了一下上面的习题。

    1.编写程序,打印出输入中单词长度的直方图。

    先来说第一题,没输入一个一个单词后,你就要出入一个空格,接着输入一个单词,在输入一个空格,依此循环输入。当一个句子输入完了,就需要隔行另起一段。

    例:

    i am a studen

    第1个单词长度为1

    第2个单词长度为2

    第3个单词长度为1

    第4个单词长度为6

    但是,当每输入完一个单词的时候需要用空格隔开,然后在输入,编写的过程,要判断,详情看代码。

    通过维基百科查询,目前最长单词的长度为30,有个很长的大概是225多个字母,不过我向我们一般也用不着它。

    将最长字母长度MAXWORD设置为30,如果你喜欢你可以设置成任意长度

    建立单词长度数组word length,简称为wl[].

    数组最大为wl[MAXWORLD]

    将单词长度数组中的值全部值为0

    int i;

    for(i = 1; i <= MAXWORD; i++)

      wl[i] = 0;


    为什么要这样做?

    我遇到这个题目的时候是这么想的,每输入一个单词,将其长度放入数组中保存着。

    于是,我就写呀写呀,写了好长时间。

    后来我就没写了,翻了下原来的笔记,看看了,原来可以这么想,一下子事情变得简单多了。

    我将长度为1~30的字母,分别归类长度为1的、长度为2、长度为3等等,然后将其放入数组,让它们保存着。

    例:

    internet 这个单词长度为8,我就将其放入数组wl[8],

    如果还有相同长度放入wl[8]中,wl[8]的值就得+1啦。

    所以该写成++wl[8]。

    现在思路明白了,我们可以这么写了。

    #include <stdio.h>

    #define MAXWORD 30 //单词的最大长度
    #define IN 1 //在单词内,即没有遇到空格
    #define OUT 0 //在单词外,即遇到了空格

    /*word length ==> wl单词长度简称*/

    int wl()
    {
    char c;
    int i;
    int nc;
    int state; //state为单词的状态:IN或OUT;
    int overflow; //操过MAXWORD的单词个数
    int wl[MAXWORD]; //长度为1~30的的字符长度统计

    state = OUT;
    nc = 0;
    overflow = 0;

    for(i = 1; i < MAXWORD; ++i)
    wl[i] = 0;

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

    if(nc > 0)
    if(nc < MAXWORD)
    ++wl[nc];
    else
    ++overflow;
    nc = 0;
    }
    else if(state == OUT)
    {
    state = IN;
    nc = 1;
    }
    else
    ++nc;


    for(i = 1; i < MAXWORD; ++i)
    printf("长度为:%d的单词个数为:%d : \n\n", i, wl[i]);

    return 0;
    }
    main()
    {
    wl();
    }

    不擅长写作,文章仅供参考,如有错误请指正。

    Have a nice day!!!
  • 相关阅读:
    谈To B产品路径逻辑:To B产品的核心本质到底是什么?
    做产品应该遵循哪些宏观产品原则?
    做产品应该遵循哪些微观产品原则?
    B端产品的第一性原理思考
    美团点评王慧文:互联网有AB面,最惨烈战争发生在B2
    《罗振宇 知识就是力量》
    生活是一只龙虾
    CAD-美的热水器F50-32DQ
    CAD-椭圆和圆弧命令
    CAD-圆命令
  • 原文地址:https://www.cnblogs.com/fhefh/p/2226651.html
Copyright © 2011-2022 走看看