| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3105 人关注过本帖
标题:C语言编程,小菜鸡求大神帮忙
只看楼主 加入收藏
qcjqcj
Rank: 1
等 级:新手上路
帖 子:31
专家分:8
注 册:2018-11-26
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:13 
C语言编程,小菜鸡求大神帮忙
  Description
输入一段英文(字数小于100),以回车结束,统计其中的每个字母出现次数,不区分大小字。
Input
多组测试数据,每组输入一段英文(字数小于100),以回车结束
Output
输出每个字母出现的次数(次数为零的不输出) 每组数据后面输出一个空行
 以下是我的代码,但是oj上显示错误
#include<stdio.h>
#include<string.h>
int main()  
{
    char str[100];
    int n[26]={0};
    int i,j;
    while(gets(str)!=NULL)
    {
      j=strlen(str);
      for(i=0;i<j;i++)
      {if(str[i]>=97&&str[i]<=122)
      n[str[i]-'a']++;
       if(str[i]>=65&&str[i]<=90)
      n[str[i]+32-'a']++;}
      for(i=0;i<26;i++)
      {if(n[i]>0){
       printf("%c:%d",i+'a',n[i]);
       printf("\n");
       printf("\n");}
      }
      i=0;for(i=0;i<26;i++)
      n[i]=0;
    }   
}
搜索更多相关主题的帖子: C语言 输出 str for i++ 
2018-11-28 11:52
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
收藏
得分:5 
题目是只要输出次数就行了吧
2018-11-28 13:04
qcjqcj
Rank: 1
等 级:新手上路
帖 子:31
专家分:8
注 册:2018-11-26
收藏
得分:0 
回复 2楼 豆豆的滴
Sample Input
Welcome to c world.
Sample Output
c: 2
d: 1
e: 2
l: 2
m: 1
o: 3
r: 1
t: 1
w: 2
类似这种形式
2018-11-28 13:06
qcjqcj
Rank: 1
等 级:新手上路
帖 子:31
专家分:8
注 册:2018-11-26
收藏
得分:0 
回复 2楼 豆豆的滴
我觉得我输出已经可以了,但总是wrong anwser,不知道哪里有问题,求大神指教
2018-11-28 13:08
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
收藏
得分:5 
题目要求,以回车判断结束

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-28 13:33
wlxy_wang
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:77
专家分:303
注 册:2018-11-2
收藏
得分:5 
程序的逻辑没有问题,程序是可以运行的,但有两个问题。首先一个致命的问题,程序不能终止,你的外重循环是一个死循环。
另外每组输出后输出一个空行,也就是组与组之间由空行分割,你的是每个输出都占一行,从字面意思来看,每组占一行。之后输出一个空行.
解决这两个问题。应该就可以了吧。
2018-11-28 15:15
qcjqcj
Rank: 1
等 级:新手上路
帖 子:31
专家分:8
注 册:2018-11-26
收藏
得分:0 
回复 6楼 wlxy_wang
大神这是我对第二个问题修改后的代码,但第一个问题不是很理解,外循环是那个while吗,为什么是死循环?
请您指教,谢谢
#include<stdio.h>
#include<string.h>
int main()  
{
    char str[100];
    int n[26]={0};
    int i,j;
    while(gets(str)!=NULL)
    {
      i=0;for(i=0;i<26;i++)
      n[i]=0;
      j=strlen(str);
      for(i=0;i<j;i++)
      {if(str[i]>=97&&str[i]<=122)
      n[str[i]-'a']++;
       if(str[i]>=65&&str[i]<=90)
      n[str[i]+32-'a']++;}
      for(i=0;i<26;i++)
      {if(n[i]>0)
       printf("%c:%d\n",i+'a',n[i]);}
       printf("\n");
    }     
}
   
2018-11-28 18:41
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
收藏
得分:0 
你把最后一个空行printf("\n");去掉看看
2018-11-28 19:06
qcjqcj
Rank: 1
等 级:新手上路
帖 子:31
专家分:8
注 册:2018-11-26
收藏
得分:0 
回复 8楼 豆豆的滴
不行啊
2018-11-28 19:26
想都不要想
Rank: 2
等 级:论坛游民
威 望:1
帖 子:7
专家分:29
注 册:2018-11-28
收藏
得分:5 
#include<stdio.h>
#include<string.h>
int main()  
{
    char str[100];
    int n[26] = {0};
    int i,j;
     scanf("%s", str);
   j=strlen(str);
   for(i=0;i<j;i++)
    {
        if(str[i]>=97&&str[i]<=122)
              n[str[i]-'a']++;
           if(str[i]>=65&&str[i]<=90)
              n[str[i]+32-'a']++;
   }
  for(i=0;i<26;i++)
  {
   if(n[i]>0){
           printf("%c:%d",i+'a',n[i]);
   printf("\n");
   printf("\n");}
  }
  i=0;
  for(i=0;i<26;i++)
      n[i]=0;
      
}

你的while有问题
2018-11-28 21:51
快速回复:C语言编程,小菜鸡求大神帮忙
数据加载中...
 
   



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

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