c语言 一个输出出现次数最多的字母的程序

问题描述

c语言 一个输出出现次数最多的字母的程序

字母不区分大小写
输出格式:出现的次数 该字母
如果有复数个出现次数最多的字母,就按字母排列顺序输出


输入
One Two Buckle My Shoe
输出
3 eo

输入
Once upon a time,there lived a manwhose name wos Lip van Winkle.
输出
8 e

 #include<stdio.h>
#include<string.h>

typedef struct alphabet
{
    char alphabet[99];
    int point;
}Alp;

void toLowerCase(char a[])
{
    int i;
    for(i=0;i<strlen(a);i++){
        if(a[i]>='A'&&a[i]<='Z'){a[i]=a[i]+32;}
    }
}

int main(void)
{
    int i;
    char input[99];
    char convert[99];
    Alp alp[99];
    while(scanf("%s",input)!=EOF){
        toLowerCase(input);
        for(i=0;i<strlen(input);i++){
            alp.alphabet[i]=input[i];
            alp.point[i]++;
        }
    }
    printf("%d %s",alp.point,alp.alphabet);
    return 0;
}

这个是我自己写的(写到一半实在编不下去了),还是不要看比较好,不然会干扰大家思维

解决方案

http://www.cnblogs.com/fhefh/archive/2011/10/27/2226925.html

解决方案二:

 #include <stdio.h>

void main(){
    //char str[100] = "Once upon a time,there lived a manwhose name wos Lip van Winkle.";
    char str[100] = "One Two Buckle My Shoe";
    int count[26] = {0};//存储出现次数最多的。
    int i = 0;
    int max = 0;
    while(str[i] != ''){
        if(str[i] >= 'a' && str[i] < 'z'){ //小写字母
            count[str[i] - 'a'] ++;
        }else if(str[i] >= 'A' && str[i] < 'Z'){//大写字母
            count[str[i] + 32 - 'a'] ++;
        }
        i++;
    }

    for(i = 0 ; i < 26; i++){
        printf("%c:%dn",i+'a',count[i]);
        if(count[i] > max){
            max = count[i];
        }
    }
    printf("字母最多出现%d次,分别是:n",max);
    for(i = 0; i < 26; i++){
        if(count[i] == max){
            printf("%cn",i+ 'a');
        }
    }
}

解决方案三:

建立一个二维数组进行匹配,找到zm[][1]最值对应的zm[][0]就是出现次数最多的字母。我下面这个只能帮你匹配到两个字母出现的次数相同切最多,如果3个及以上的字母出现次数相同且最多只能输出前两个

```
 char zm[26][2]={{'a',0},{'b',0},{'c',0},{'d',0},{'e',0},{'f',0},{'g',0},{'h',0},{'i',0},{'j',0},{'k',0},{'l',0},{'m',0},{'n',0},{'o',0},{'p',0},{'q',0},{'r',0},{'s',0},{'t',0},{'u',0},{'v',0},{'w',0},{'x',0},{'y',0},{'z',0}};
 char sr[20];
 int i,j,n,m,max=0;
 //scanf("%s",sr);
 while(scanf("%s",sr)!=EOF){
                toLowerCase(sr);
                for(i=0;i<strlen(sr);i++)
            for(j=0;j<26;j++)
                if(sr[i]==zm[j][0])
                {
                    zm[j][1]++;
                    break;
                }
        for(i=1;i<26;i++)
        {
            max=zm[0][1];
            n=0;
            if(max<zm[i][1])
            {
                max=zm[i][1];
                n=i;
            }
            else if(max==zm[i][1])
                m=i;
        }
        if(zm[n][1]==zm[m][1])
            printf("出现次数最多的是%c和%cn最多为:%d次",zm[n][0],zm[m][0],max);
        else
            printf("出现次数最多的是%cn最多为:%d次",zm[n][0],max);
        m=n=max=0;
        }

解决方案四:

map即可。不用这么麻烦

解决方案五:

  #include<stdio.h>

int main(void)
{
    int i,max=0;
    char ch;
    int check['z'-'a']={0};
    while(scanf("%c",&ch)!=-1){
        if('a'<=ch&&ch<='z') check[ch-'a']++;
        if('A'<=ch&&ch<='Z') check[ch-'A']++;
    }
    /*填补这一段代码*/
    for(i=0;i<'z'-'a';i++){
        if(check[i]>check[max]) max=i;
    }
    printf("%d %cn", check[max], 'a'+ max);
    return 0;
}

解决方案六:

一群人秀C语言啊,感觉没啥实际用途啊

时间: 2024-08-31 15:47:58

c语言 一个输出出现次数最多的字母的程序的相关文章

设计-c语言 一个输出出现次数最多的字母的程序

问题描述 c语言 一个输出出现次数最多的字母的程序 字母不区分大小写 输出格式:出现的次数 该字母 如果有复数个出现次数最多的字母,就按字母排列顺序输出 例 输入 One Two Buckle My Shoe 输出 3 eo 输入 Once upon a time,there lived a manwhose name wos Lip van Winkle. 输出 8 e 使用以下代码雏形 #include<stdio.h> int main(void) { int i,max=0; char

用JS得到字符串中出现次数最多的字母

网上有这样一道题目: Quote: 一个字符串String="adadfdfseffserfefsefseetsdg",找出里面出现次数最多的字母和出现的次数. 经典的解答思路为:取出字符串的第一个字符(首字母),利用的字符串的replace方法将符合正则表达式(第一个字符)替代为空,此字母出现的次数为原始的字符串长度减去替代后的字符串长度.循环迭代找出长度最长的字母. <script type="text/javascript">//<![CDA

找出字符串中出现次数最多的字母和出现次数精简版_javascript技巧

复制代码 代码如下: <script type="text/javascript"> var a = "testthisprojecthelloworld!"; var b = {}; var c = null; for (var i in a) { !isNaN(b[a[i]]++) || (b[a[i]] = 1); c = b[a[i]] > c ? a[i] : c; } alert(c + ":" + b[c]); &

用JS得到字符串中出现次数最多的字母_javascript技巧

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 补充: 复制代码 代码如下: eval("str = str.replace(/"+getStr+"/g,'')"); 可能很多人想这样写 str = str.replace(/getStr/g,"),可结果却是会出错的.为什么呢,在这句中正则表达式匹配的是 getStr 字符串,而不是 getStr 指向的首字母.通过 eval 方法可以避免(首先 getStr 得到指向的首字母,用字符串连接 

输出array中出现次数最多的数

问题描述 输出array中出现次数最多的数 用类似这种的方法 不用Map int[] a = new int[10]{1,2,3,4,5,6,7,7,7,7}; public int getPopularElement(int[] a) { int count = 1, tempCount; int popular = a[0]; int temp = 0; for (int i = 0; i < (a.length - 1); i++) { temp = a[i]; tempCount = 0

c语言-C语言编写一个输出的函数

问题描述 C语言编写一个输出的函数 编写一个函数,输出数组,要求通过参数指定每行输出的元素个数,以 及每个元素占有的列数. 假设自己定义一个参数为x 那么打印的时候printf(""%xd"")怎么用一个参数来满足每次打印时候 元素所占列数的不同呢 解决方案 #include <stdio.h>void display(int data[] int n int cols int w){ for (int i = 0; i < n; i++) { p

c语言-C语言如何输出一个变量的地址

问题描述 C语言如何输出一个变量的地址 scanf("%d",&a); 假如我输入"10",那这个"10"的地址怎么求,怎么输出来呢? 解决方案 你要好好看看指针的定义和运用. 你可以定义一个整型指针 int p: 然后定义一个整型变量 int a: p的值是一个整型变量的地址 &是取地址操作符 **p = &a:* 这样,指针变量p保存的就是整型变量a的地址了 你要引用整型变量a,可以直接使用变量本身a,也可以通过指针间

求一个字符串中连续出现次数最多的子串

解题思路 例如字符串"abababc",最多连续出现的为ab,连续出现三次.要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复子串为abab.两个题目的解法有些类似,都用到了后缀数组这个数据结构.求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如上面的字符串为: abababc bababc ababc babc abc bc c 可以看出第一个后缀数组和第三个后缀数组的起始都为ab,第5个后缀数组也为ab.可以看出规律来,一个字符串s,如果第一次出现

c语言 设计一个输出stdout和stderr的程序

问题描述 c语言 设计一个输出stdout和stderr的程序 一行输入一个无符号整数,作为stdout输出.将不符合这个形式的输入除去 并作为stderr输出.输入例12 3 45 6 78输出例(stdout)128输出例(stderr)3 45 6 7不知道该怎么办...我们连stdout stderr是什么怎么控制都没学过求大神解答 解决方案 楼上大神写的挺好的,但是我发现一个问题,他的程序只是形似神不似.这个要判断当前输入行是否是无符号整数而不是0-9的整数,当你输入12这个整数时他会