鱼C论坛

 找回密码
 立即注册
查看: 2099|回复: 3

关于一个统计字符数的程序

[复制链接]
发表于 2012-5-26 19:17:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>

  2. void main()
  3. {
  4.         int i,num[10]={0}, blank=0, other=0;
  5.         char a[100];
  6.         gets(a);
  7.         for(i=0;a[i]!='\0';i++)
  8.         {
  9.                 if(a[i]>='0' && a[i]<='9')
  10.                 {
  11.                         num[a[i]]++;
  12.                 }
  13.                 else if(a[i] == ' ')
  14.                 {
  15.                         blank++;
  16.                 }
  17.                 else
  18.                 {
  19.                         other++;
  20.                 }
  21.         }
  22.         for(i=0;i<10;i++)
  23.         {
  24.                 printf("There is %d个%d\n", num[i], i);
  25.         }
  26.         printf("There is %d balnk\n",blank);
  27.         printf("There is %d other character",other);
  28. }
复制代码
输入的字符串一多,运行就出现“程序已停止工作”。字符少一点就是num统计不出来  全是0,我想实现的是如果数字是0koi存入num[0],依次类推。不知道哪里出错了。望高手帮帮忙!num[a]这种语法应该的对的??

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-26 20:58:20 | 显示全部楼层
楼主  因为你定义char a[100];为字符数组,所以当你用num[a[i]]++; 表达式的时候,a[i]由字符型转为整型,即如果a[i]='1',转换为ASCII码表中49,所以num[a[i]]++;  等于num[49]++;   超出num数组范围,当然等不到答案了,应该改成num[a[i]-'0']++;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-5-26 22:15:27 | 显示全部楼层

多谢!!!已经解决了 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-27 13:01:44 | 显示全部楼层
字符问题,说的对,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 18:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表