#include <stdio.h>
void main()
{ int a,num,kongge,qita;
char i;
a=0;
num=0;
kongge=0;
qita=0;
printf("请输入字符序列:");
fflush(stdin);
while(1)
{i=getchar();
if(i>='a'&&i<='z'||i>='A'&&i<='Z')
{a++;
continue;}
else if(i>='0'&&i<='9')
{num++;
continue;}
else if(i==32)
{kongge++;
continue;
}
// if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z')&&!(i>='0'&&i<='9'))
// {qita++;
// continue;
// }
if(i='\n')
break;
};
printf("\n这中字符中共有字母%d个\n数字%d个\n空格%d个\n其他字符%d个\n",a,num,kongge,qita);
}
这是用来计算用户输入一串字符后,把他输入的各种符号数量打印出来,用来算数字,字母和空格都没问题,可是其它的字符算不出来有多少个,
注销的是我想的写法,可是不行,有人能告诉我,我错在那里了吗,怎么改好呢?想了我一下午了。郁闷!
----------------解决方案--------------------------------------------------------
if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z')&&!(i>='0'&&i<='9'))
这里错了
应该是if(i!=32&&(!(i>='a'&&i<='z'||i>='A'&&i<='Z')||!(i>='0'&&i<='9')))
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
else if(i==32)
你要是从键盘输入32就表示两个字符,那i就不能定义为CHAR I;应该是CHAR I[10];或将else if(i==32)改为
else if (i==' ')表示空格;
if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z')&&!(i>='0'&&i<='9'))你的意思是只要前面输入的i不满足前面的条件就执行该IF语句吧?那么假设你输入的i是9,则!(i>='0'&&i<='9')就等于0,
则!(i>='a'&&i<='z'||i>='A'&&i<='Z')&&0就等于1;
则i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z')&&!(i>='0'&&i<='9'),因为i=9,所以i!=32,所以IF的条件为真,既执行IF语句.与你的意图相反.应将IF语句改为if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z'||i>='0'&&i<='9')
----------------解决方案--------------------------------------------------------
else if(i!= 10&&i!=13)
{qita++;
continue;
}
else
break;
};
把你注释的那个改成这个;
你统计其它字符的时候,把回车和换行都给统计为其它字符,当然没有办法退出了!!
换行和回车的ASCII吗为10共和13,
在前面的基础上加上else if 把回车排除在外的所有其它字符,统计为其它字符
然后在那个的基础上,剩下的只有回车和换行了。所以可以退出了
----------------解决方案--------------------------------------------------------
if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z'||i>='0'&&i<='9')
最后再加半个括号.if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z'||i>='0'&&i<='9'))
----------------解决方案--------------------------------------------------------
同意楼上的算法
----------------解决方案--------------------------------------------------------
if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z'||i>='0'&&i<='9')
最后再加半个括号.if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z'||i>='0'&&i<='9'))
它输入回车键会退出程序吗?还是直接算作其它字符,然后其它字符器在加一?
这个时候每个字符都是以ASCII吗的形式存储。。
----------------解决方案--------------------------------------------------------
谢谢声音,我试试看,刚开始学,还不太会,
----------------解决方案--------------------------------------------------------
哈哈成功了!谢谢大家帮忙!可以睡个好觉了!大家晚安!
----------------解决方案--------------------------------------------------------