试图转专业的kk 2022-11-06 07:33 采纳率: 42.9%
浏览 86
已结题

关于统计英文字母的问题,如何解决?

一直AC不了,请帮忙修改~请不要只发个链接,啥都不说!!
Description
一个集合里只有小写字母(个数不超过1000),集合会以括号的形式给出,
小写字母用逗号分隔开来,现在问你该集合里有多少互不相同的英文字母。
Input
每组测试数据一行,表示一个只有小写字母的集合,小写字母个数 <= 1000。
Output
对于每一组测试数据输出该集合里有多少互不相同的英文字母。
Sample Input 1
{a, b, c}
{b, a, b, a}
Sample Output 1
3
2
我写的代码如下:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
  char temp;
  int count,flag[123];
  while((temp=getchar()) != EOF)
  {
    if(temp == '{')
    {
      count=0;
      memset(flag,0,sizeof(flag));
      continue;
    }
    else if(islower(temp) && !flag[temp])
    {
      count++;
      flag[temp]=1;
      continue;
    }
    else if(temp == '}')
    {
      printf("%d\n",count);
      continue;
    }
    else
      continue;
  }
  return 0;
}

运行后judger给的结果是WA

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-11-06 10:36
    关注

    输入方式做个修改,供参考:

    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
    int main()
    {
      char str[2002];
      int  i,cnt,flag[123]={0};
      while((gets(str)) != NULL) //ctrl+z 结束输入
      {
        memset(flag,0,sizeof(flag));
        for (i=0,cnt=0;str[i];i++)
        {
            if(str[i] == '{' || str[i] == ',' || str[i] == '}')
                continue;
            if(islower(str[i]) && !flag[str[i]])
            {
                cnt++;
                flag[str[i]]=1;
            }
        }
        printf("%d\n",cnt);
      }
      return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 已采纳回答 11月8日
  • 创建了问题 11月6日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?