Assignment > Count and Histogram

本文介绍了一个使用C语言编写的程序,该程序用于统计输入文本中各字母出现的次数,并通过星号(*)来可视化展示这些字母的频率。程序还记录了单词之间的空白处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述这里写图片描述这里写图片描述这里写图片描述

第一次打代码的时候,思路如下

#include<stdio.h>
int main(){
    int j = 0,i = 0,k = 0,keep = 0,m = 0,n = 0,h = 0,l=0;
    // count是用来计算每个字母个数的,初始化为0
    int count[27] = {0};
    //用以读取一个单词的all, 用以读取一个letter的get
    char all[400] = {' '},get = 0;
    //这是最下方的一行:twsx是twenty six二十六个字母
    char twsx[27] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','W'};
    /*compute & find the repeat*/   

    for (i=0;i<=400,(get=getchar())!=EOF;i++){

    //当时还没有学习函数的读取,可以用strlen 或者。。。测定一下长度先
    //然后可以用scanf%s的形式,这样读到的将会是在空格截止

        scanf("%c",&all[i]);

        if (i>=1 && (int)all[i-1] == (int)' ' && (int)all[i]!= (int)' '||i>=1 && (int)all[i-1] == (int)'\n' && (int)all[i]!= (int)'\n'){
        count[26]++; 
        }
        switch(all[i]){
            case 'a':count[0]++; break;
            case 'b':count[1]++; break;
            case 'c':count[2]++; break;
            case 'd':count[3]++; break;
            case 'e':count[4]++; break;
            case 'f':count[5]++; break;
            case 'g':count[6]++; break;
            case 'h':count[7]++; break;
            case 'i':count[8]++; break;
            case 'j':count[9]++; break;
            case 'k':count[10]++; break;
            case 'l':count[11]++; break;
            case 'm':count[12]++; break;
            case 'n':count[13]++; break;
            case 'o':count[14]++; break;
            case 'p':count[15]++; break;
            case 'q':count[16]++; break;
            case 'r':count[17]++; break;
            case 's':count[18]++; break;
            case 't':count[19]++; break;
            case 'u':count[20]++; break;
            case 'v':count[21]++; break;
            case 'w':count[22]++; break;
            case 'x':count[23]++; break;
            case 'y':count[24]++; break;
            case 'z':count[25]++; break;
            default : continue;
        }

    }

    /*find the larest counter && cut down column if a letter dose not exist*/
    for (keep = 0,i=1;i<=26;i++){

        if (count[i]>=count[i-1]){
            keep = count [i];
        }else{
            keep = count [i-1];
        }

    }
    for(k = 0;k <= 25;k++){
        if(count[k]==0){
            n = n;
        }else{
            n++;
        }
    }

/*print a matrix of letter & '*'*/
    char fang[100][27]={' '}; 
    for (k=0;k<=n;k++){
        for(m=0;m<count[m];m++){
            fang[m][k]='*';
          // printf("%c",fang[m][k])    ;   
        }


    }
    for(h=keep;h>=0;h--){
        printf("%d\t%s\n",h+1,fang[h]);
        if (h==0){
            printf(" \t");
            for(l=0;l<=26;l++){
                if(l<26){
                    if(count[l]==0){
                        continue;
                    }else{
                        printf("%c",twsx[l]);

                    }   
                }else{
                    printf("W\n");
                }


            }
        }
    }
    return 0;
}
内容概要:本文深入探讨了Kotlin语言在函数式编程跨平台开发方面的特性优势,结合详细的代码案例,展示了Kotlin的核心技巧应用场景。文章首先介绍了高阶函数Lambda表达式的使用,解释了它们如何简化集合操作回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程跨平台开发领域不断完善发展。; 适合人群:对函数式编程跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解实践Kotlin的函数式编程特性跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值