| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 438 人关注过本帖
标题:[求助]关于指针的问题?
只看楼主 加入收藏
wchx215
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2006-9-4
收藏
 问题点数:0 回复次数:5 
[求助]关于指针的问题?
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
我下面的程序编译没问题,可答案老是不正确,英文字母、空格、数字的个数多一倍,而其它字符的个数在我的电脑上
显示为62,我一直不明白为什么会这样?请高手帮帮忙。顺便说一下,当我不用指针,用s=getchar()就不会有这种问题。
#include "stdio.h"
void main(void)
{char *s;
 int letters=0,space=0,digit=0,others=0;
 printf("please input some characters\n");
gets(s);
 while(*s++!='\n')
 {
 if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
  letters++;
 else if(*s==' ')
  space++;
   else if(*s>='0'&&*s<='9')
       digit++;
     else
       others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
space,digit,others);
}
搜索更多相关主题的帖子: 指针 
2006-09-04 20:41
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用wchx215在2006-9-4 20:41:39的发言:
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
我下面的程序编译没问题,可答案老是不正确,英文字母、空格、数字的个数多一倍,而其它字符的个数在我的电脑上
显示为62,我一直不明白为什么会这样?请高手帮帮忙。顺便说一下,当我不用指针,用s=getchar()就不会有这种问题。
#include "stdio.h"
void main(void)
{char *s;
 int letters=0,space=0,digit=0,others=0;
 printf("please input some characters\n");
gets(s);
 while(*s++!='\n')
 {
 if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
  letters++;
 else if(*s==' ')
  space++;
   else if(*s>='0'&&*s<='9')
       digit++;
     else
       others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
space,digit,others);
}

指针指向的空间在哪里?


倚天照海花无数,流水高山心自知。
2006-09-04 20:44
wchx215
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2006-9-4
收藏
得分:0 
哦!对,指针指向的空间不正确。可是我补上:
char c[50],*s;
s=c;
还是不行。
2006-09-04 21:08
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>
#include<string.h>
int dig=0,word=0,space=0,other=0;//全局变量

void jishu(char *str)
{
int i=0;
while(*(str+i)!='\0')
{
if(*(str+i)>='0'&&*(str+i)<='9')
{
dig++;
}
else
if(*(str+i)>='a'&&*(str+i)<='z'||*(str+i)>='A'&&*(str+i)<='Z')
{
word++;
}
else
if(*(str+i)==' ')
{
space++;
}
else
{
other++;
}
i++;
}
}
int main()
{
char str[100];

gets(str);
jishu(str);
printf("字母个数是:%d\n数字个数是:%d\n空格个数是:%d\n其他字符个数是:%d\n",word,dig,space,other);
return(0);
}


倚天照海花无数,流水高山心自知。
2006-09-04 21:14
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include"stdio.h"
main()
{
char *s,c[50];
int l=0,sp=0,d=0,o=0;
s=c;
printf("please input some characters\n");
gets(s);
while(*s!='\0')
{
if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
l++;
else if(*s==' ')
sp++;
else if(*s>='0'&&*s<='9')
d++;
else
o++;
s++;
}
printf("%-3d%-3d%-3d%-3d\n",l,sp,d,o);
getch();
}

/*这个也可以的*/


倚天照海花无数,流水高山心自知。
2006-09-04 21:29
wchx215
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2006-9-4
收藏
得分:0 
谢谢你了,原来问题出现在'\0',不能用'\n'呀!答案就对了!!!
2006-09-04 21:41
快速回复:[求助]关于指针的问题?
数据加载中...
 
   



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

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