计算机青铜 2022-03-30 21:53 采纳率: 100%
浏览 22
已结题

计算各类型字符的个数,请问我的代码哪里错了?

有一篇文章,共有3行文字,每行小于80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
请问我的代码哪里错了?感谢解答!

#include <stdio.h>
#include <string.h>
int main(){
    char str[3][80];
  gets(str);
  int up=0,lo=0,di=0,sp=0,ot=0,i,j;
  for(i=0;i<=2;i++)
  {
    for(j=0;j<=80;j++)
    {
      if(str[i][j]>='A'&&str[i][j]<='Z')up++;
      else if(str[i][j]>='a'&&str[i][j]<='z')lo++;
      else if(str[i][j]>='0'&&str[i][j]<='9')di++;
      else if(str[i][j]==' ')sp++;
      else ot++;
    }
  }
  printf("upper case:%d\n",up);
  printf("lower case:%d\n",lo);
  printf("digit:%d\n",di);
  printf("space:%d\n",sp);
  printf("other:%d\n",ot);  
}

img

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-03-31 00:38
    关注

    修改处见注释,供参考:

    #include <stdio.h>
    #include <string.h>
    int main()
    {
      int up=0,lo=0,di=0,sp=0,ot=0,i,j; //修改
      char str[3][80]={0};              //修改
    
      for (i = 0;i < 3; i++) //修改
          gets(str[i]);
    
      for(i = 0;i < 3; i++) //for(i = 0;i <= 2; i++)修改
      {
        for(j = 0;str[i][j] != '\0'; j++) //for(j = 0;j <= 80; j++)修改
        {
          if(str[i][j]>='A'&&str[i][j]<='Z')up++;
          else if(str[i][j]>='a'&&str[i][j]<='z')lo++;
          else if(str[i][j]>='0'&&str[i][j]<='9')di++;
          else if(str[i][j]==' ')sp++;
          else ot++;
        }
      }
      printf("upper case:%d\n",up);
      printf("lower case:%d\n",lo);
      printf("digit:%d\n",di);
      printf("space:%d\n",sp);
      printf("other:%d\n",ot);
    
      return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月30日

悬赏问题

  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像