| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 994 人关注过本帖
标题:求教,万分感谢!
只看楼主 加入收藏
violet303
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-15
收藏
 问题点数:0 回复次数:11 
求教,万分感谢!
为什么我的c这么差,都不会做,哭啊
输入一串字符,统计并输出字符串中出现频率最高的字母及出现次数,可能有多个出现频率最高的字母,字母不区分大小写,输出时用大写字母,输出格式printf("%c:%d\t",     );程序说明:用数组来统计各字母个数。如:用a[0]统计’a’字母的个数,a[25]统计’z’字母的个数
输入:the c programming language   
输出:G:4
输入:abc ABC ABCDxyz
输出:A:3     B:3     C:3
搜索更多相关主题的帖子: 感谢 
2008-11-25 11:13
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
偶能写个nlogn的出来

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-11-25 12:24
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
嗯...
大概懂了一点点,等下给你,现在写

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-25 12:35
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
搞了我好久分钟,饭都没吃


#include <stdio.h>
#include <conio.h>
#include <string.h>
struct alp{
  char c;
  int count;
}al[26];
int main(void){
  int i,j;
  int user[50]={0};
  for(i='a';i<='z';i++){
    al[i-97].c=i;
    al[i-97].count=0;
  }
  printf("Please enter a string(len max is 50)\n");
  i=0;
  do{
    user[i]=getchar();
    i++;
  }while(user[i-1]!='\n');
  if(strlen(user)>50){
    printf("Len is bigger then 50.");
    getch();
    return 1;
  }
  for(i=0;i<50;i++)
    for(j=0;j<26;j++)
      if(user[i]==al[j].c || user[i]==al[j].c-32){
        al[j].count+=1;
        break;
      }
  for(i=0;i<26;i++)
    if(al[i].count)
      printf("%c:%d\n",al[i].c,al[i].count);
  getch();
}

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-25 13:16
dillon
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-6
收藏
得分:0 
#include"stdio.h"
#include"string.h"
#include"conio.h"
void main()
{
    int i,b;
    char ch;
    int a[26]={0};
    printf("enter your words:\n");
    ch=getche();
    do{
          if(65<=ch&&ch<=90)
          {
             i=ch-65;
             a[0+i]++;
             ch=getche();
          }
        else if(ch!=13)
        {
             i=ch-97;
            a[0+i]++;
            ch=getche();
        }
    }while(ch!=13);
    b=a[i];
    for(i=0;i<26;i++)
    {
        if(b<=a[i])
        {
            b=a[i];
        }
        
    }
    for(i=0;i<26;i++)
    {
        if(a[i]==b)
            printf("%c:%d   \t",i+65,b);
    }
}

这个更简单点
2008-11-25 14:54
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
楼上的代码确实简洁!
但是有漏洞!
因为使用的是getche();(本人不知道getch和getche有啥区别),大概和getch差不多吧?所以我可以不输入数字,甚至说,我可以输入一般输入接收不到的按键,如:Esc等..

应该限制一下.

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-25 18:03
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
以下是引用dillon在2008-11-25 14:54的发言:

....b=a[i];
for(i=0;i<26;i++){
  if(b<=a[i]){
    b=a[i];
  }
}....

我不知道你的这一段代码是干吗用的.
想问问你,我试了一下,把这一段代码去掉,结果好象也没错
希望解释一下你的算法,学习学习 .

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-25 18:15
dubukuangye
Rank: 1
等 级:新手上路
威 望:2
帖 子:155
专家分:3
注 册:2008-11-11
收藏
得分:0 
这是排序用的,如果没有这个怎么知道哪个出现的频率最高呢?

与其离开她为了过的更好,不如抓住她,自己努力让她过的更好
2008-11-25 20:22
dillon
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-6
收藏
得分:0 
恩LS说的对,但是LZ要求的是输入字符串所以就那样写咯。
2008-11-25 22:06
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
以下是引用liyanhong在2008-11-25 12:24的发言:

偶能写个nlogn的出来

 偶能写个n的出来

2008-11-25 22:41
快速回复:求教,万分感谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024337 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved