| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 562 人关注过本帖
标题:求助一个简单问题
只看楼主 加入收藏
天晶子剑
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-2-13
收藏
 问题点数:0 回复次数:6 
求助一个简单问题
统计一个字符串中空格,大写字母,小写字母,数字,及其他字符数。
#include<stdio.h>
main()
{
char a[100];char *p;
int i,j,k,n,m,s;
p=a;
printf("please enter the letters:\n");
gets(a);
j=0;k=0;m=0;n=0;s=0;
for(i=0;i<100;i++,p++)
{
if(*p==' ')j=j+1;
else{
if('A'<=(*p)<='Z')n=n+1;
else{
if('a'<=(*p)<='z')m=m+1;
else{
if('0'<=(*p)<='9')k=k+1;
else{
if(*p!='\0') s=s+1;
else break;
}
}
}
}
}
printf("The number of space is%d\n",j);
printf("The number of number is%d.\nThe number of capital letters is%d.\nThe number of letters is%d.\nThe number of others is%d\n",k,n,m,s);
getchar();
}那里出错了/ 谢了
搜索更多相关主题的帖子: 简单问题 
2006-02-19 11:28
wengych
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-2-19
收藏
得分:0 
恩。。。拜托你提问是把编译出错的提示内容也给贴上来,这样也让人省点力气

so,我先不看你的提问了,请先把问题说清楚

系统工程师,主要从事基于SUN服务器的系统集成 爱好编程,C/C++/JAVA Debian
2006-02-19 11:35
天晶子剑
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-2-13
收藏
得分:0 
编译没有出错,只是运算结果不是我想要得。
2006-02-19 11:59
wengych
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-2-19
收藏
得分:0 

首先,劝告你不要再次使用gets这个函数,该函数是造成1988年蠕虫病毒大爆发的元凶
其次,你的程序写得有一点点乱,循环判断的条件可以用while(*p != 0)
再次,if('A'<=(*p)<='Z')n=n+1; 这样的判断语句我没有使用过,不知道会产生什么结果
正确使用方式应为: if( (*p <= 'Z') && (*p >= 'A') ) 两个判断语句的括号可以省略,主要是为了更清晰表达思路
同理,其他几个类似的条件判断语句都需要修改

余下部分没有细看


系统工程师,主要从事基于SUN服务器的系统集成 爱好编程,C/C++/JAVA Debian
2006-02-19 12:16
天晶子剑
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-2-13
收藏
得分:0 
谢了,我是一下
2006-02-19 12:18
天晶子剑
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-2-13
收藏
得分:0 
不用gets那用什么,scanf不能接受空格,getchar()又太复杂,
2006-02-19 12:24
上帝的牙齿
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-2-19
收藏
得分:0 

4楼说的很对,if('A'<=(*p)<='Z')n=n+1;不严谨。修改了一下你的程序,也确实是这里的问题,把这个习惯改掉吧.

[此贴子已经被作者于2006-2-19 19:07:52编辑过]

2006-02-19 18:54
快速回复:求助一个简单问题
数据加载中...
 
   



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

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