| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6841 人关注过本帖
标题:问题是:1. 输入一串字符,以“?”结束,统计各字母出现的次数,并按字母出 ...
只看楼主 加入收藏
li1007944219
Rank: 2
等 级:论坛游民
帖 子:17
专家分:13
注 册:2016-8-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:13 
问题是:1. 输入一串字符,以“?”结束,统计各字母出现的次数,并按字母出现的多少输出(先输出字母出现多的,次数相同的按照字母表顺序输出,不出现的不输出)。
#include<stdio.h>
#include<string.h>
void main()
{
    int num[52]={0},i=0,j=0;
    int t,k;
    char str[100],s[52],a[10];
    gets(str);
    for(i=0;i<26;i++);
    s[i]='A'+i;
for(j=0;j<26;j++)
s[j+26]='a'+j;
i=0,j=0;
    while(str[i]!='?')
    {
        if(str[i]>='A'&&str[i]<='Z')
          num[str[i]-'A']++;
        if(str[i]>='a'&&str[i]<='z')
            num[str[i]-'a'+26]++;
            i++;
    }
i=0,j=0;
for(j=0;j<52;j++)
{
   k=j;
   for(i=j+1;i<52;i++)
   {
       if(num[k]<num[i])k=i;
   }
t=num[j];num[j]=num[k];num[k]=t;
s[j]=s[k];
}
i=0;
while(num[i]!=0)
{
printf("\n");
 printf("字母%c出现的次数是%d",s[i],num[i]);
 i++;
}
}
搜索更多相关主题的帖子: include 字母表 统计 
2016-08-24 17:48
li1007944219
Rank: 2
等 级:论坛游民
帖 子:17
专家分:13
注 册:2016-8-24
收藏
得分:0 
我想问一下 为什么运行好 输入小写字母可以 大写字母却不可以
2016-08-24 17:49
li1007944219
Rank: 2
等 级:论坛游民
帖 子:17
专家分:13
注 册:2016-8-24
收藏
得分:0 
afggd?

字母g出现的次数是2
字母a出现的次数是1
字母d出现的次数是1
字母f出现的次数是1
字母s出现的次数是1像这样
2016-08-24 17:51
li1007944219
Rank: 2
等 级:论坛游民
帖 子:17
专家分:13
注 册:2016-8-24
收藏
得分:0 
ASFSF?

字母坛鱿值拇问??
字母坛鱿值拇问??
字母坛鱿值拇问??Press像这样
2016-08-24 17:52
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
void main()
{
    int num[52] = { 0 }, i = 0, j = 0;
    int t, k;
    char c;
    char str[100], s[52], a[10];
    gets(str);
    for (i = 0; i<26; i++)    //多了个;
    s[i] = 'A' + i;
    for (j = 0; j<26; j++)
        s[j + 26] = 'a' + j;
    i = 0, j = 0;
    while (str[i] != '?')
    {
        if (str[i] >= 'A'&&str[i] <= 'Z')
            num[str[i] - 'A']++;
        if (str[i] >= 'a'&&str[i] <= 'z')
            num[str[i] - 'a' + 26]++;
        i++;
    }
    i = 0, j = 0;
    for (j = 0; j<52; j++)
    {
        k = j;
        for (i = j + 1; i<52; i++)
        {
            if (num[k] < num[i])
            {
                t = num[i]; num[i] = num[k]; num[k] = t;
                //s[j] = s[k];
                c = s[i]; s[i] = s[k]; s[k] = c;
            }
        }
        
    }
    i = 0;
    while (num[i] != 0)
    {
        printf("\n");
        printf("字母%c出现的次数是%d", s[i], num[i]);
        i++;
    }
}
2016-08-24 18:13
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
改了下,楼主程序略显冗长,试下吧
#include<stdio.h>
 #include<string.h>
  main()
 {
     int num[52]={0},i=0,j=0;
     int t,k;
     char str[100],s[52],a[10];
     gets(str);
     for(i=0;i<26;i++);
     s[i]='A'+i;
 for(j=0;j<52;j++)
 s[j]='A'+j;
 i=0,j=0;
     while(str[i]!='\0')
     {
         if(str[i]>='A'&&str[i]<='z')
           num[str[i]-'A']++;
             i++;
     }
for(i=0;i<52;i++)
 {
 if(num[i]!=0)
 {
      printf("\n");
  printf("字母%c出现的次数是%d",s[i],num[i]);
 }

 }
 }
2016-08-24 18:35
zx315
Rank: 5Rank: 5
来 自:广东
等 级:职业侠客
威 望:2
帖 子:86
专家分:378
注 册:2016-7-13
收藏
得分:5 
回复 楼主 li1007944219
for(i=0;i<26;i++);
    s[i]='A'+i;


for 后面多了个句号……

Read The Fucking Source Code~
2016-08-24 18:49
qdhuanglei
Rank: 2
等 级:论坛游民
威 望:1
帖 子:7
专家分:14
注 册:2016-8-22
收藏
得分:5 
#include <stdio.h>
#include<string.h>

int main()
{
    int num[52],x;

    char str[100],st[52],s;
    for(x=0;x<=25;x++)
    {
        st[x]='A'+x;
        num[x]=0;
        st[x+26]='a'+x;
        num[x+26]=0;
    }
    gets(str);
    int i,j;
    for(i=0;i<100;i++)
    {
        if(str[i]=='#')
        {
            break;
        }        x=str[i];
        if (x>=65&&x<=90)
        {
            num[x-65]++;
        }
        else if(x>=97&&x<=122)
        {
            num[x-97+26]++;
        }
    }
    for(i=1;i<52;i++)
    {
        for(j=1;j<=52-i;j++)
        {
            x=num[j];
            if(num[j-1]<num[j])
            {
                num[j]=num[j-1];
                num[j-1]=x;
                s=st[j];
                st[j]=st[j-1];
                st[j-1]=s;
            }
        }
    }
    for(i=0;i<52;i++)
    {
        if(num[i]!=0)
        {
            printf("字母%c出现的次数是%d\n",st[i],num[i]);
        }
    }
    return 0;
}
2016-08-25 19:46
li1007944219
Rank: 2
等 级:论坛游民
帖 子:17
专家分:13
注 册:2016-8-24
收藏
得分:0 
回复 5楼 grmmylbs
嘻嘻 谢谢 太粗心了、
2016-08-26 12:22
li1007944219
Rank: 2
等 级:论坛游民
帖 子:17
专家分:13
注 册:2016-8-24
收藏
得分:0 
回复 7楼 zx315
谢谢哟
2016-08-26 12:22
快速回复:问题是:1. 输入一串字符,以“?”结束,统计各字母出现的次数,并按 ...
数据加载中...
 
   



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

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