| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 687 人关注过本帖
标题:[求助]请告诉我哪里错拉
只看楼主 加入收藏
zhijin
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2004-9-29
收藏
 问题点数:0 回复次数:2 
[求助]请告诉我哪里错拉
一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数,本来是个循环题目我用指针做的。
我搞不清那里错拉,能编译,但是出来的结果不大对哦
#include <stdio.h>
void main(void)
{ int word=0,num=0,space=0,other=0,i; //分别定义字母 数字 空格 其它
char sentence[]="you are a pig.";
char *p;
p=&sentence[i];
while(*p++)
{ if (*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')
word++;
else if(*p>='0'&&*p<='9')
num++;
else if(*p==‘ ’)
space++;
else other++;
}
printf("%d %d %d %d\n",word,num,space,other);
}
出来的结果是25 2 0 7
麻烦告诉我,哪里错拉和为什么会出现这样的结果。

[此贴子已经被作者于2005-9-1 14:50:31编辑过]


搜索更多相关主题的帖子: num else sentence space 
2005-09-01 14:14
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
收藏
得分:0 
这里:while(*p++)
换成while(*p){.....p++;}
楼主选的例子.....

2005-09-01 16:10
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
以下是引用zhijin在2005-9-1 14:14:46的发言: 一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数,本来是个循环题目我用指针做的。 我搞不清那里错拉,能编译,但是出来的结果不大对哦 #include <stdio.h> void main(void) { int word=0,num=0,space=0,other=0,i; //分别定义字母 数字 空格 其它 char sentence[]="you are a pig."; char *p; p=&sentence[i]; //i在声明出没有初始化,数组可能越界。 while(*p++) //写成while(*p) { ... p++; },因为在你测试了*p位置以后,p马上向后移一个地址,这就造成统计遗漏,而且会造成越界。 { if (*p>='a'&&*p<='z'||*p>='A'&&*p<='Z') word++; else if(*p>='0'&&*p<='9') num++; else if(*p==‘ ’) space++; else other++; } printf("%d %d %d %d\n",word,num,space,other); } 出来的结果是25 2 0 7 麻烦告诉我,哪里错拉和为什么会出现这样的结果。

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-09-01 16:50
快速回复:[求助]请告诉我哪里错拉
数据加载中...
 
   



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

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