| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1460 人关注过本帖
标题:一个关于cin及switch的问题
只看楼主 加入收藏
ddx8773
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-3
收藏
得分:0 
是在输入完后再统计

2006-04-07 13:25
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 

#include<iostream.h>
#include<ctype.h>
int main()
{
char ch;
int aCnt=0,eCnt=0,iCnt=0,oCnt=0,uCnt=0;
int consonantCnt=0,ffCnt=0,flCnt=0,fiCnt=0;
while(cin.get(ch))
{
switch(ch)
{
case'a': case'A':
++aCnt ;
break;
case'e':case'E':
++eCnt ;
break;
case'i':case'I':
++iCnt ;
break;
case'o':case'O':
++oCnt ;
break;
case'u':case'U':
++uCnt ;
break;
case'f':
++consonantCnt;
cin.get(ch);
switch(ch)
{
case'f':
++consonantCnt;++ffCnt;
break;
case'i':
++iCnt;++fiCnt;
break;
case'l':
++consonantCnt;++flCnt;
break;
}
break;
default: ++consonantCnt;
break;
}
break;
}
cout<<"a:"<<aCnt<<endl;
cout<<"e:"<<eCnt<<endl;
cout<<"i:"<<iCnt<<endl;
cout<<"o:"<<oCnt<<endl;
cout<<"u:"<<uCnt<<endl;
cout<<"consonant:"<<consonantCnt<<endl;
cout<<"ff:"<<ffCnt<<endl;
cout<<"fi:"<<ffCnt<<endl;
cout<<"fl:"<<ffCnt<<endl;
return 0;
}
**********************************
以上用红色写的是我加的提醒楼主注意:你的程序我不知道编的是否符合你的预料结果暂且不说,但是最外层的switch语句中的break语句只能跳出switch语句而没能跳出 while循环所以造成死循环的。要是想跳出循环语句必须在最外层的switch语句的外面也就是while循环中加一个break语句。就可以了!另外你的原因是你没有写出while循环的大括号导致你没能看出问题的所在!希望你能注意这一点。

♂ 死后定当长眠,生前何须久睡。♀
2006-04-08 01:20
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
另外4楼的程序出现的问题也是比较多的根本就不能运行!
应该写为:
#include<iostream.h>
#include<ctype.h>
#include<conio.h> // for need of getch();
#include<fstream>
#include<cstdlib> // for need of EXIT_FAILURE
using namespace std;
int main()
{
char ch;
int aCnt=0,eCnt=0,iCnt=0,oCnt=0,uCnt=0;
int consonantCnt=0,ffCnt=0,flCnt=0,fiCnt=0;
ifstream ins;
ins.open("myLetter.txt");
if (ins.fail())
{
cerr<<"***Error:Cannot open myLetter.txt for input."<<endl;
return 0;
}
ins.get(ch);
while (!ins.eof())
{
switch(ch)
{
case'a': case'A':
++aCnt ;
break;
case'e':case'E':
++eCnt ;
break;
case'i':case'I':
++iCnt ;
break;
case'o':case'O':
++oCnt ;
break;
case'u':case'U':
++uCnt ;
break;
case'f':
++consonantCnt;
ins.get(ch);
switch(ch)
{
case'f':
++consonantCnt;++ffCnt;
break;
case'i':
++iCnt;++fiCnt;
break;
case'l':
++consonantCnt;++flCnt;
break;
}
break;
default: ++consonantCnt;
break;
}
cout<<"a:"<<aCnt<<endl;
cout<<"e:"<<eCnt<<endl;
cout<<"i:"<<iCnt<<endl;
cout<<"o:"<<oCnt<<endl;
cout<<"u:"<<uCnt<<endl;
cout<<"consonant:"<<consonantCnt<<endl;
cout<<"ff:"<<ffCnt<<endl;
cout<<"fi:"<<ffCnt<<endl;
cout<<"fl:"<<ffCnt<<endl;
break;
}
return 0;
}
该程序因为是带文件存储的所以应在相应的MyProjects文件夹中加一个名为myLetter.txt的文件内容可以是一些写好的字符串。如:F:\Program Files\Microsoft Visual Studio\MyProjects\myLetter.txt内容为:“hsdklfdjfjsdfksfiweoppsadoppqfipsakffsdajkfjdlsalfka”就可以了。

♂ 死后定当长眠,生前何须久睡。♀
2006-04-08 01:37
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
  我看了下我的代码, 是错了几处  呵呵,新手是这样的  请别见怪,我会去改改

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-04-08 20:48
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
while(cin.get(ch))
输入0不退出吗

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-04-09 00:28
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
13楼的朋友给出的建议好象也有错误啊?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-04-09 16:06
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
才学的指针,现学现用,没编译的。
#include<iostream>
#include<cstdlib>
#include<conio.h>
int main()
{
char str[100];
char *p=0;
int aCnt=0,eCnt=0,iCnt=0,oCnt=0,uCnt=0;
int consonantCnt=0,ffCnt=0,flCnt=0,fiCnt=0;
cout<<"Enter your line you want to input:";
gets(str);
p = str;
for(;*p;p++)
{
switch(*p)
{
case'a': case'A':
++aCnt ; break;
case'e':case'E':
++eCnt ;break;
case'i':case'I':
++iCnt ;break;
case'o': case'O':
++oCnt ; break;
case'u': case'U':
++uCnt ; break;
case'f':
++consonantCnt;
++p;
switch(*p)
{
case'f':
++consonantCnt;
++ffCnt;
break;
case'i':
++consonantCnt;
++iCnt;
++fiCnt;
break;
case'l':
++consonantCnt;
++flCnt;
break;
case'\0':goto result;
default:++consonantCnt;
}
default::++consonantCnt;
break;
}
}
result:
cout<<"a:"<<aCnt<<endl;
cout<<"e:"<<eCnt<<endl;
cout<<"i:"<<iCnt<<endl;
cout<<"o:"<<oCnt<<endl;
cout<<"u:"<<uCnt<<endl;
cout<<"consonant:"<<consonantCnt<<endl;
cout<<"ff:"<<ffCnt<<endl;
cout<<"fi:"<<ffCnt<<endl;
cout<<"fl:"<<ffCnt<<endl;
getch();
return 0;
}

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-04-11 12:51
jehovahxxx
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2005-1-26
收藏
得分:0 
cin.get(ch) 先自己了解下其意义吧
还有cin.get()

#include \"stdio.h\" main() {FILE *myMind; printf(\"Life is A rollercoaster\"); /*生活就像过山车*/ if(myMind=fopen(\"My Heart\",\"w+\")==NULL) printf(\"tomorrow never comes\"); fputs(\"YOU\",myMind); printf(\"U\'R the last things on my mind!\"); }
2006-04-11 17:55
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
12楼的只能判断一次
加上判断结束语句就好了

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-04-12 12:54
快速回复:一个关于cin及switch的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017450 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved