标题:[求助]请告诉我哪里错拉
只看楼主
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



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




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

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