为什么运行按回车没反应?

zryant 2010-06-12 12:03:11
#include<stdio.h>
int main(void)
{
char ch;
int en,em,num,ot;
en=em=num=ot=0;

scanf("%s",&ch);
while(ch!='\n'){
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
en++;
else if(ch=' ')
em++;
else if(ch>='1'||ch<'1')
num++;
else
ot++;
scanf("%s",&ch);
}
printf("%d%d%d%d\n",en,em,num,ot);

return 0;

}
...全文
847 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
shangyangi 2010-06-13
  • 打赏
  • 举报
回复
1、if(ch=' ')改为if(ch==' ')
2、scanf("%s",&ch);改为scanf("%c",&ch);
3、printf("%d%d%d%d\n",en,em,num,ot);改为printf("%d %d %d %d\n",en,em,num,ot);
即可
ylu029 2010-06-13
  • 打赏
  • 举报
回复
else if(ch=' ')
这是赋值等,应该用判断等==
  • 打赏
  • 举报
回复
scanf("%s",&ch);

%s 改为 c%
ameyume 2010-06-12
  • 打赏
  • 举报
回复
int main()
{
char ch;
int en,em,num,ot;
en = em = num = ot = 0;

scanf("%c",&ch);
while(ch!='\n'){
if((ch>='a'&& ch<='z') || (ch>='A'&&ch<='Z'))
{
en++;
}
else if(ch==' ')
{
em++;
}
else if(ch>='1'||ch<'1') // 此处判断条件无聊什么都满足
{
num++;
}
else
{
ot++;
}
scanf("%c",&ch);
}
printf("%d,%d,%d,%d\n",en,em,num,ot);

system("pause");

return 0;
}
brookmill 2010-06-12
  • 打赏
  • 举报
回复
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
en++;
else if(ch==' ')
brookmill 2010-06-12
  • 打赏
  • 举报
回复
scanf("%c",&ch);
brookmill 2010-06-12
  • 打赏
  • 举报
回复
scanf("%c",&ch);
z569362161 2010-06-12
  • 打赏
  • 举报
回复
scanf("%s",&ch);是输入字符串
dulongfirst 2010-06-12
  • 打赏
  • 举报
回复
七楼正解
s912586553 2010-06-12
  • 打赏
  • 举报
回复
printf("%d%d%d%d\n",en,em,num,ot);`
s912586553 2010-06-12
  • 打赏
  • 举报
回复
printf("%d%d%d%d\n",en,em,num,ot);
zryant 2010-06-12
  • 打赏
  • 举报
回复
统计数字的个数是要怎么判断的啊,现在就这句写不好了???

else if(ch>='1'||ch<'1')

这句不对吗???
gz_qmc 2010-06-12
  • 打赏
  • 举报
回复
最好的是

while(getch()!=27);

//按ESC键退出
gz_qmc 2010-06-12
  • 打赏
  • 举报
回复

另外如果在DOS下
需要等待你看到结果这样

getch();

楼上用system("pause");
个人觉得不好
yuzhongguang 2010-06-12
  • 打赏
  • 举报
回复
int main()
{
char ch;
int en,em,num,ot;
en = em = num = ot = 0;

scanf("%c",&ch); //确实是这里的原因
while(ch!='\n'){
if((ch>='a'&& ch<='z') || (ch>='A'&&ch<='Z'))
{
en++;
}
else if(ch==' ')
{
em++;
}
else if(1) // 我想你是想输出输入字符的个数
{
num++;
}
else
{
ot++;
}
scanf("%c",&ch);
}
printf("%d,%d,%d,%d\n",en,em,num,ot);

system("pause");

return 0;
}
东莞某某某 2010-06-12
  • 打赏
  • 举报
回复
#include<stdio.h>
// after modify
int main(void)
{
char ch;
int en,em,num,ot;
en=em=num=ot=0;

scanf("%c",&ch);
while(ch!='\n'){
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
en++;
else if(ch==' ')
em++;
else if(ch>='1'||ch<='9')
num++;
else
ot++;
fflush(stdin);
scanf("%c",&ch);
}
printf("%d %d %d %d\n",en,em,num,ot);

return 0;

}
delphiwcdj 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 brookmill 的回复:]

scanf("%c",&ch);
[/Quote]
很明显

69,371

社区成员

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

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