感觉很神奇,变换一下得到的结果一样,但我想不出其中的原因
#include<stdio.h>#include<ctype.h>
int main()
{
char str[100];
int i;
int a=0; //判断字母函数
printf("输一个字符串:\n");
gets(str);
for(i=0;str[i];i++)
{
if(isalpha(str[i]))
a+=1;
}
printf("字母有%d个\n",a);
return 0;
}
以上是第一个代码,下面是另外一个代码:
#include<stdio.h>
#include<ctype.h>
int main()
{
char str[100]={"\0"};
int i;
int a=0; //判断字母函数
printf("输一个字符串:\n");
gets(str);
for(i=0;i<100;i++)
{
if(isalpha(str[i]))
a+=1;
}
printf("字母有%d个\n",a);
return 0;
}
这两个代码有不同之处,第一个代码的str[100]没有初始化,for语句的判断式为str[i];第二个代码的str[100]初始化为str[100]={"\0"},for语句的判断式为i<100,就这两个地方我不明白,实际上两者运行后得到的结果是一样的,同样可以测出字符串有多少个字母,求解释
另外,还有一点不明白的是:
#include<stdio.h>
#include<ctype.h>
int main()
{
char str[100]={"\0"};
int i;
int a=0; //判断字母函数
printf("输一个字符串:\n");
gets(str);
for(i=0;i<100;i++)
{
if(isalpha(str[i])!=0)
a+=1;
}
printf("字母有%d个\n",a);
return 0;
}加颜色的那部分,本来我是这样的:if(isalpha(str[i]))这样写可以计算出字符串的字母数,但是我要是改为if(isalpha(str[i])==1),就不能输出正确结果了,但再换回if(isalpha(str[i])!=0)却又能输出正确结果,为什么?我个人认为==1与!=0的效果应该是一样的啊?为什么却无法实现呢?
[ 本帖最后由 love云彩 于 2012-12-23 15:02 编辑 ]