马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 工科男 于 2016-7-24 08:25 编辑
如题,我先把代码贴上来。#include <stdio.h>
int main ()
{
void f(char x[]);
char a[100];
printf ("请输入一串字符串:\n");
gets(a);
f(a);
printf ("\n");
return 0;
}
void f(char x[])
{
int i;
int n=0,m=0,j=0,k=0;
for (i=0;x[i]!='\0';i++)
{
if ((x[i]>='0')&&(x[i]<='9'))
n++;
else if (((x[i]>='a')&&(x[i]<='z'))||((x[i]>='A')&&(x[i]<='Z')))
m++;
else if (x[i]==32)
j++;
else
k++;
}
printf ("该字符串含有字母:%d 个\n",m);
printf ("该字符串含有数字:%d 个\n",n);
printf ("该字符串含有空格:%d 个\n",j);
printf ("该字符串含有其他符号:%d 个\n",k);
}
论坛代码的注释好像不能贴上去,所以我就截图了,而且感觉截图还不大清晰,所以,我就把这些问题打出来。
请大家看一下代码段的第22行,我的问题就出在那里:
这一行就是我所困惑的地方,当我写成x[i]==32时,结果正确,
但是写成x[i]=='32'时候,结果就不正确了。
空格在ASCII码中的编号是32,而且,我定义与使用的都是字符串,
很明显,在ASCII中的0~127之间的字符,整型与字符数据可以互换。
而字符数据在使用过程中都应该加单引号吧,比如本案例 x[i]>='a' 或者 x[i]<='9'
所以困惑,为什么要写成 x[i]==32,而不写成 x[i]=='32'
在此先谢谢各位大神了!! |