首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
C/C++
新手乐园
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
这个程序有什么问题?
[已结贴,结贴人:StandMyGround]
加为好友
发送私信
在线聊天
StandMyGround
永远的菜鸟
等级:
发表于:
2008-05-29 19:23:24
楼主
下面的程序实现:从标准输入设备读取一组字符,然后统计元音字符a、e、i、o、u出现的次数
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
char c;
int aCnt = 0, eCnt = 0,iCnt = 0,oCnt = 0, uCnt = 0;
while(
cin >> c
)
{
switch(c) {
case 'a' :
aCnt++;
break;
case 'e' :
eCnt++;
break;
case 'i' :
iCnt++;
break;
case 'o' :
oCnt++;
break;
case 'u' :
uCnt++;
break;
default :
;
}
}
cout < <aCnt < <endl;
cout < <eCnt < <endl;
cout < <iCnt < <endl;
cout < <oCnt < <endl;
cout < <uCnt < <endl;
return 0;
}
可是运行时,输入字符之后程序没反应。
如果把cin>>c用cin.get(c)替代就可以正常运行。
cin>>c和cin.get(c)有什么区别吗?
问题点数:
20
回复次数:
9
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zjw6861982
张琎韡
等级:
发表于:
2008-05-29 19:31:23
1
楼 得分:
10
cin>>c,无论你输入什么都返回1;因此while循环无法退出
cin.get(c)可以回车结束,
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lizhaohu
等级:
发表于:
2008-05-29 19:32:22
2
楼 得分:
2
cin.get(c)会判断接受的是否为回车
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
qmm161
秀才
等级:
发表于:
2008-05-29 19:34:44
3
楼 得分:
2
其实用cin>>c也是可以的,不过就是你要输入一个 ctrl+z 让循环退出,并且return之前加一个 system("pause");
至于两者间的差别,我想msdn上应该有讲吧,或者google
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zmlovelx
帅得不敢出门
等级:
发表于:
2008-05-29 19:35:45
4
楼 得分:
2
引用 1 楼 zjw6861982 的回复:
cin>>c,无论你输入什么都返回1;因此while循环无法退出
cin.get(c)可以回车结束,
或者你可以在while里面加个判断,如果为回车就结束
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lijiawlm
爱玩不是错
等级:
发表于:
2008-05-29 23:11:01
5
楼 得分:
0
jf
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
daiguoliangfirst
窗外秋雨
等级:
发表于:
2008-05-30 00:05:43
6
楼 得分:
4
cin>>当读取错误时才返回false,返回对象为istream&
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
darkarthur
陽炎
等级:
发表于:
2008-05-30 00:18:21
7
楼 得分:
0
有的时候还是觉得scanf好啊~ 呵呵~
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xlzxlich
阳光
等级:
发表于:
2008-05-30 00:19:26
8
楼 得分:
0
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
string c;
int aCnt = 0, eCnt = 0,iCnt = 0,oCnt = 0, uCnt = 0;
cin >> c;
for(int i=0; i <c.size(); i++)
{
switch(c[i]) {
case 'a' :
aCnt++;
break;
case 'e' :
eCnt++;
break;
case 'i' :
iCnt++;
break;
case 'o' :
oCnt++;
break;
case 'u' :
uCnt++;
break;
default :
;
}
}
cout < < aCnt < < endl;
cout < < eCnt < < endl;
cout < < iCnt < < endl;
cout < < oCnt < < endl;
cout < < uCnt < < endl;
return 0;
}
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kings_zqz
等级:
发表于:
2008-05-30 08:33:44
9
楼 得分:
0
引用 3 楼 qmm161 的回复:
其实用cin>>c也是可以的,不过就是你要输入一个 ctrl+z 让循环退出,并且return之前加一个 system("pause");
至于两者间的差别,我想msdn上应该有讲吧,或者google
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友