免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2222 | 回复: 6
打印 上一主题 下一主题

向各位高手们请教一个统计字符的C程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-01 23:38 |只看该作者 |倒序浏览
题目是这样的:输入一串字符,然后统计字符中的字母,数字,空格和其他字符的个数,分别打印出来
问题出在“空格”上,统计字母,数字都没有问题,但是当我键入“¥#@#”时,却被当作空格统计了,显示有四个空格,
而不是四个特殊字符,请问这是怎么回事呢?我女朋友考二级,这是她写的程序,请高手指教,谢谢大家!
以下是程序的源代码:
#include<stdio.h>
void main()
{
char ch;
int m,n,x,y;
m=0;n=0;x=0;y=0;
printf("please input several characters:\n");
/*scanf("%s",&ch);*/
while((ch=getchar())!='\n')
{
        if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')) {
                                               m++;
                                               printf("m:%d\n",m);
    }
    if(ch>='0'&&ch<='9'){
                         n++;
                         printf("n:%d\n",n);
    }else if(ch=' '){
                       x++;
                       printf("x:%d\n\40\40",x);
    }else{
          y++;
          printf("y:%d\n",y);
    }
}
printf("%d,%d,%d,%d",m,n,x,y);
system("pause");
}

论坛徽章:
0
2 [报告]
发表于 2008-04-02 08:45 |只看该作者
}else if(ch=' '){

顺便上一张她的PP吧

论坛徽章:
0
3 [报告]
发表于 2008-04-02 12:53 |只看该作者
原帖由 epegasus 于 2008-4-2 08:45 发表
}else if(ch=' '){

顺便上一张她的PP吧

2楼说的对。
建议:
1.判断语句中,常量写在 == 的左边。
2.变量定义,最好用具有意义的英文单词或缩写。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2008-04-02 13:04 |只看该作者
原帖由 77h2_eleven 于 2008-4-2 12:53 发表

2楼说的对。
建议:
1.判断语句中,常量写在 == 的左边。

我不建议这么做。
其实只要 -Wall,就可以了。

论坛徽章:
0
5 [报告]
发表于 2008-04-02 13:12 |只看该作者
原帖由 77h2_eleven 于 2008-4-2 12:53 发表
1.判断语句中,常量写在 == 的左边。

太丑了吧

论坛徽章:
0
6 [报告]
发表于 2008-04-02 13:19 |只看该作者
原帖由 prolj 于 2008-4-2 13:12 发表

太丑了吧

这么快就有两个人反对,还有一个是flw兄?
大家的公司规范或是自己的习惯都不是这样的么?
觉得丑的话,可以用宏定义代替常量(貌似这也是好的习惯)。

论坛徽章:
0
7 [报告]
发表于 2008-04-02 13:23 |只看该作者

回复 #6 77h2_eleven 的帖子

常量写在 == 的左边,很好的习惯嘛,有啥问题o(∩_∩)o...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP