标题:有三行字符,统计大小写字母,空格,数字,其他字符的个数,请帮忙排错
只看楼主
lrui829
Rank: 2
等 级:论坛游民
帖 子:16
专家分:17
注 册:2016-3-31
结帖率:25%
已结贴  问题点数:20 回复次数:6 
有三行字符,统计大小写字母,空格,数字,其他字符的个数,请帮忙排错
有三行字符,统计大小写字母,空格,数字,其他字符的个数
#include <stdio.h>
int main( )
{ int i,j;
  char a[3][80];
  int daxie=0,xiaoxie=0,shuzi=0,kongge=0,others=0;
  for(i=0;i<3;i++)
  {printf("请输入第%d行字符:",i+1);
   gets(a[i]); /[color=#FF0033]/为什么不能用gets(a[i][]);[/color]
  }

  for(i=0;i<3;i++)
     {for(j=0;j<80&&a[i][j]!='\0';j++)
      {if(a[i][j]<='Z'&&a[i][j]>='A')daxie=daxie+1;
       else
        if(a[i][j]<='z'&&a[i][j]>='a')xiaoxie=xiaoxie+1;
        else
         if(a[i][j]<='9'&&a[i][j]>='0')shuzi=shuzi+1;
         else
          if(a[i][j])==' ')kongge=kongge+1; //总是提示错误在这一行
          else others=others+1;
      }
         }
 
  printf("共有大写字母%d个,小写字母%d个,数字%d个,空格%d个,其他字符%d个\n",daxie,xiaoxie,shuzi,kongge,others);
  return 0;
}
搜索更多相关主题的帖子: include others 统计 字母 
2016-04-14 12:43
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:7 
二维数组前面第一个[]可以空着,不设定长度;但是第二个[]必须要固定长度;不是不可以用二位数组,是用的方法要对。
你开始设定给二维数组赋值是按照3行来赋值,那用gets(a[i]);就挺合适的了。如果想用二维数组,你这样看下其元素:
a[0][0] a[0][1] a[0][2]......
a[1][0] a[1][1] a[1][2]......
a[2][0] a[2][1] a[2][2]......
要对其赋值只靠1个i循环是不行的,要嵌套循环赋值。不光控制行的增加,还要控制列的增加,这样是不是好理解点?

[此贴子已经被作者于2016-4-14 13:02编辑过]

2016-04-14 12:46
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:7 

为什么不能用gets(a[i][]);
能解释一下a[i][]是什么东西吗?

[此贴子已经被作者于2016-4-14 12:54编辑过]


未佩好剑,转身便已是江湖
2016-04-14 12:53
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
if(a[i][j])==' ')kongge=kongge+1; //总是提示错误在这一行
多半个括号

[此贴子已经被作者于2016-4-14 13:03编辑过]

2016-04-14 12:55
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
已经修改
#include <stdio.h>
int main( )
{ int i,j;
  char a[3][80];
  int daxie=0,xiaoxie=0,shuzi=0,kongge=0,others=0;
  for(i=0;i<3;i++)
  {
      printf("请输入第%d行字符:",i+1);
      gets(a[i]);
  }

  for(i=0;i<3;i++)
  {
      for(j=0;j<80&&a[i][j]!='\0';j++)
      {
        if(a[i][j]<='Z'&&a[i][j]>='A')
            daxie=daxie+1;
        else if(a[i][j]<='z'&&a[i][j]>='a')
            xiaoxie=xiaoxie+1;
        else if(a[i][j]<='9'&&a[i][j]>='0')
            shuzi=shuzi+1;
        else if(a[i][j]==' ')
            kongge=kongge+1; //总是提示错误在这一行
        else others=others+1;
       }
   }
 
  printf("共有大写字母%d个,小写字母%d个,数字%d个,空格%d个,其他字符%d个\n",daxie,xiaoxie,shuzi,kongge,others);
  return 0;
}


[此贴子已经被作者于2016-4-14 13:21编辑过]

2016-04-14 12:56
Vsnow
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:124
专家分:145
注 册:2015-1-3
得分:7 
#include <stdio.h>
int main( )
{ int i,j;
  char a[3][80];
  int daxie=0,xiaoxie=0,shuzi=0,kongge=0,others=0;
  for(i=0;i<3;i++)
  {
      printf("请输入第%d行字符:",i+1);

      gets(a[i]);
      // 为什么不能用gets(a[i][]);
  }

  for(i=0;i<3;i++)
     {
      for(j=0;j<80 && a[i][j]!='\0';j++)
      {
         if(a[i][j]<='Z' && a[i][j]>='A')
              daxie=daxie+1;
         else if(a[i][j]<='z'&&a[i][j]>='a')
             xiaoxie=xiaoxie+1;
         else if(a[i][j]<='9'&&a[i][j]>='0')
             shuzi=shuzi+1;
         else if(a[i][j]==' ')
              kongge=kongge+1; //总是提示错误在这一行
         else
              others=others+1;
      }
  }
 
  printf("共有大写字母%d个,小写字母%d个,数字%d个,空格%d个,其他字符%d个\n",daxie,xiaoxie,shuzi,kongge,others);
  return 0;
}
2016-04-14 15:18
Vsnow
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:124
专家分:145
注 册:2015-1-3
得分:0 
     if(a[i][j])==' ')kongge=kongge+1; //总是提示错误在这一行
if语句中多了一个括号,有时候修改错误不一定要按照顺序来,有时候后面提示的错误修改之后,错误就减少了。细心!!!
2016-04-14 15:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-463624-1-1.html




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

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