我下面的程序编译没问题,可答案老是不正确,英文字母、空格、数字的个数多一倍,而其它字符的个数在我的电脑上
显示为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);
}
----------------解决方案--------------------------------------------------------
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
我下面的程序编译没问题,可答案老是不正确,英文字母、空格、数字的个数多一倍,而其它字符的个数在我的电脑上
显示为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);
}
指针指向的空间在哪里?
----------------解决方案--------------------------------------------------------
哦!对,指针指向的空间不正确。可是我补上:
char c[50],*s;
s=c;
还是不行。
----------------解决方案--------------------------------------------------------
#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);
}
----------------解决方案--------------------------------------------------------
#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();
}
/*这个也可以的*/
----------------解决方案--------------------------------------------------------
谢谢你了,原来问题出现在'\0',不能用'\n'呀!答案就对了!!!
----------------解决方案--------------------------------------------------------