• 算法提高---统计单词数


    问题描述
      统计输入英文文章段落中不同单词(单词有大小写之分,但统计时忽略大小写)各自出现的次数。 输入段落中所含单词的总数不超过100,最长单词的长度不超过20个字母.
    输入格式
      一个包含若干句子的段落, 每个句子由若干英文单词组成. 除空格,逗号和句号外, 这些输入的句子中不含其他非字母字符, 并且, 逗号和句号紧跟在它前面的英文单词后面, 中间没有空格. 段落最后一个字符是回车符,表示输入结束.
    输出格式
      若段落中共有M个不同的英文单词,则按照其在段落中出现的先后顺序输出M行,各行的格式为:单词中所有字母均用大写形式输出(最长的单词顶格输出,它前面没有多余的空格;其余单词与其右对齐)+冒号+N个*号+该单词在段落中的出现次数N
    样例输入
    This is a test. This test is easy. This is a test. This test is easy.

    样例输出

     This:****4

     IS:****4

     A:**2

     TEST:****4

     EASY:**2

    #include <stdio.h>
    #include <string.h>
    
    void Delete_And_Big(char *cha){
        int i;
        for(i=0;cha[i]!='';i++){
            if(cha[i] == ','  || cha[i] == '.'){
                cha[i] = '';
                break;
            }
            else{
                if(cha[i] >= 'a' && cha[i] <= 'z')
                    cha[i] = cha[i] - 32;
            } 
        }
    }
    
    void Count_And_Print(char cha[][21],int *flag,int num){
        int i,j,k;
        int count[101] = {0}; //统计频次 
        i = j = 0;
        while(j<=num){
            if(flag[j] == 0){
                count[j] = 1;
                for(i=j+1;i<=num;i++){
                    if(!strcmp(cha[j],cha[i])){ //字符串比较 
                        count[j] ++;
                        flag[i] = 1;
                    }
                }
            }
            if(!flag[j]){
                printf("%s:",cha[j]);
                for(k=0;k<count[j];k++)
                    printf("*");
                printf("%d
    ",count[j]);
            }
            j ++; 
        }
    }
    
    int main(){
        char cha[101][21]={''};
        char c;
        int num = 0;
        int flag[101] = {0};
        scanf("%s",cha[num]);//忽略回车空格等空白字符,文章总是不为空的 
        scanf("%c",&c);
        while(c != '
    '){
            Delete_And_Big(cha[num]);//将接收的单词除掉尾部可能的逗号和句号,并将单词变成全部大写 
            num ++;
            scanf("%s",cha[num]);
            scanf("%c",&c);//注意回车是'
    ' 而不是'' 
        }
        Delete_And_Big(cha[num]);
        Count_And_Print(cha,flag,num);
        return 0;
    }
  • 相关阅读:
    怎么把视频变小?
    Java使用HtmlUnit抓取js渲染页面
    范仁义css3课程---2、css代码引入方式
    范仁义css3课程---1、认识css样式
    width和max-width和min-width的区别
    CSS的盒子模型
    css选择器,伪类和伪元素的区别
    CSS选择器详解(总结)
    心得体悟帖---总结-191231(看似明悟)
    css3图片卡片效果
  • 原文地址:https://www.cnblogs.com/emptyCoder/p/6242591.html
Copyright © 2020-2023  润新知