求助大佬

I_N_A 2019-04-05 01:08:44
求助大佬,为何输入一串字符后结果不对
#include <stdio.h>
int main()
{

int a,z=0,s=0,l=0,m=0;

printf("请输入一串字符:\n");
while(getchar()!='\n')
{
a=getchar();
if(65<=a&&a>=90||97<=a&&a>=122) //判断输入字符中英文字符的个数z
z++;
else if(a==32) //判断输入字符中空格个数s
s++;
else if(a>=48&&a<=57) //判断输入字符中数字个数l
l++;
else m++; //其他字符个数m
}
printf("%d\n",z);
printf("%d\n",s);
printf("%d\n",l);
printf("%d\n",m);
return 0;
}
...全文
118 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
无涯哥 2019-04-06
  • 打赏
  • 举报
回复
引用 5 楼 qq_44848479的回复:
[quote=引用 2 楼 凉拌鱼腥草的回复:]65<=a&&a>=90||97<=a&&a>=122 几个意思
就是ascii码值的比较[/quote] 65<=a&&a>=90 跟a>=90有什么区别吗?a>=90,那a肯定也大于65啊。还用并且干嘛,你确定这里没错吗?
I_N_A 2019-04-06
  • 打赏
  • 举报
回复
引用 15 楼 凉拌鱼腥草的回复:
[quote=引用 5 楼 qq_44848479的回复:][quote=引用 2 楼 凉拌鱼腥草的回复:]65<=a&&a>=90||97<=a&&a>=122 几个意思
就是ascii码值的比较[/quote] 65<=a&&a>=90 跟a>=90有什么区别吗?a>=90,那a肯定也大于65啊。还用并且干嘛,你确定这里没错吗?[/quote] 是我粗心,打错了,
六道佩恩 2019-04-05
  • 打赏
  • 举报
回复
if((65 <= a && a <= 90) || (97 <= a && a <= 122))
stherix 2019-04-05
  • 打赏
  • 举报
回复
引用 9 楼 qq_44848479 的回复:
[quote=引用 7 楼 stherix的回复:]while((a=getchar()) != '\n')
能细说下不能用的原因吗[/quote]两个getchar,会有一半的输入字符会被while语句里面的消耗掉,不会进入对a的判断
I_N_A 2019-04-05
  • 打赏
  • 举报
回复
我想知道出错的原因
I_N_A 2019-04-05
  • 打赏
  • 举报
回复
能否告诉我为什么会出错?
自信男孩 2019-04-05
  • 打赏
  • 举报
回复
#include <stdio.h>

int main()
{

int a,z=0,s=0,l=0,m=0;

printf("请输入一串字符:\n");
while((a = getchar())!='\n')
{
if((65 <= a && a >= 90) || (97 <= a && a >= 122)) //判断输入字符中英文字符的个数z
z++;
else if(a == 32) //判断输入字符中空格个数s
s++;
else if(a >= 48 && a <= 57) //判断输入字符中数字个数l
l++;
else m++; //其他字符个数m
}
printf("%d\n",z);
printf("%d\n",s);
printf("%d\n",l);
printf("%d\n",m);
return 0;
}


供参考~
I_N_A 2019-04-05
  • 打赏
  • 举报
回复
引用 7 楼 stherix的回复:
while((a=getchar()) != '\n')
能细说下不能用的原因吗
I_N_A 2019-04-05
  • 打赏
  • 举报
回复
能细说下不能用的原因吗
stherix 2019-04-05
  • 打赏
  • 举报
回复
while((a=getchar()) != '\n')
I_N_A 2019-04-05
  • 打赏
  • 举报
回复
引用 1 楼 stherix的回复:
循环内有2个getchar,必须去掉一个
就是循环里不能有两个getchar对吧
I_N_A 2019-04-05
  • 打赏
  • 举报
回复
引用 2 楼 凉拌鱼腥草的回复:
65<=a&&a>=90||97<=a&&a>=122 几个意思
就是ascii码值的比较
无涯哥 2019-04-05
  • 打赏
  • 举报
回复
改成a>=65&&a<=90,另外一个再改掉
无涯哥 2019-04-05
  • 打赏
  • 举报
回复
a大于等于65并且a大于等于90?
无涯哥 2019-04-05
  • 打赏
  • 举报
回复
65<=a&&a>=90||97<=a&&a>=122 几个意思
stherix 2019-04-05
  • 打赏
  • 举报
回复
循环内有2个getchar,必须去掉一个

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧