注册 登录
编程论坛 C++教室

[求助]进了FOR循环后,怎么出来?

a8451727 发布于 2007-05-30 14:16, 1050 次点击

如下面的:如果输入大于12或小于1,我进去了就不懂出来了,郁闷呐````。
例如我第一次输入错误,第二次输入正确,该怎样返回?

#include <iostream>
using namespace std;
void main()
{
cout <<"请输入要查询的月份:";
int n;
cin>>n;

if(n>12 || n<1)
{
for(int i=0;i<=3;i++)
{
if(n>12 || n<0)
cout <<"月份有小于1或大约12的吗?\n\n";
cout <<"请输入要查询的月份:";
cin>>n;
if(i>0)
{
cout <<"输入3次错误\n";
break;
}
}
}
else if(n==1)
cout <<"January\n";
else if(n==2)
cout <<"February\n";
else if(n==3)
cout <<"March\n";
else if(n==4)
cout <<"April\n";
else if(n==5)
cout <<"May\n";
else if(n==6)
cout <<"June\n";
else if(n==7)
cout <<"July\n";
else if(n==8)
cout <<"August\n";
else if(n==9)
cout <<"September\n";
else if(n==10)
cout <<"October\n";
else if(n==11)
cout <<"November\n";
else if(n==12)
cout <<" December\n";
}

又麻烦大家了

19 回复
#2
wfpb2007-05-30 15:12

该程序整体修改如下:

#include <iostream>
using namespace std;


void main()
{
    char* Month[]={\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\
    \"September\",\"October\",\"November\",\"December\"};
    int n;
    int count=0;
    do
    {
        cout <<\"请输入要查询的月份:\";
        cin>>n;
        if(n>12 || n<1)
            cout <<\"月份有小于1或大约12的吗?\n\n\";
        else break;
        count++;
    }while(count<3);
    if(count==3)
    {
        cout <<\"输入3次错误\n\";
        exit(1);
    }
    else cout<<Month[n-1]<<endl;
}

#3
a84517272007-05-30 15:35
嗯,没学到,不过能看懂。谢啦嘿嘿
我上面那里,要走出循环的话,该怎么做
#4
wfpb2007-05-31 15:39
if(n>12 || n<0)
cout <<"月份有小于1或大约12的吗?\n\n";
else break;
#5
a84517272007-06-02 15:13

呵呵,谢谢啦。

还请教一下各位。
在类里面,怎样使用选择语句?
就比如上面的,我在驱动程序里输入1,然后就在类里面提取一月:January,输入2就提取二月:February。
如果觉得麻烦,就请帮我写1月2月两个就行了
我的意思是想在类里使用选择。谢谢啦``

#6
a84517272007-06-02 20:54

大家快来帮忙啊

#7
神vLinux飘飘2007-06-02 21:15
我感到很疑惑,什么叫在类里使用选择?? 在类里??在main函数中不行么?
#8
tancui2007-06-02 21:52

一样!
switch
case

#9
a84517272007-06-02 22:58
回复:(神vLinux飘飘)我感到很疑惑,什么叫在类里使...

我的意思是:把月份的英文单词放到类里面,然后用main函数提取啊。

#10
神vLinux飘飘2007-06-02 23:30
[CODE]#include <iostream>
using namespace std;

class MonthFactory
{
public: static string getMonth(int);
};

string MonthFactory::getMonth( int m )
{
switch( m )
{
case 1 : return "January";
case 2 : return "February";
case 3 : return "March";
case 4 : return "April";
case 5 : return "May";
case 6 : return "June";
case 7 : return "July";
case 8 : return "August";
case 9 : return "September";
case 10 : return "October";
case 11 : return "November";
case 12 : return "December";
default : return "error";
}
}


int main()
{
cout << MonthFactory::getMonth(3) << endl;
return 0;
}

[/CODE]
#11
a84517272007-06-02 23:52
多谢了。
书里面没介绍有swith这个用法,作业却要求这种方法,晕。
受教了。感激不尽。
#12
aipb20072007-06-03 01:19
把数组用到你的类里不就行了?
#13
a84517272007-06-03 01:30
我是新手我这书超厚`````一章N长,还没学到数组呢。
#14
a84517272007-06-05 13:44
回复:(神vLinux飘飘)[CODE]#include

如果我想用月份名返回数字怎么不行的?
就如:
inline int Month::getNumber(string n)
{
switch(n)
{
case "March":return 1;
default: return "error";
}
}

知道的教下我

#15
a84517272007-06-05 15:43

如果我想用月份名返回数字怎么不行的?
就如:
inline int Month::getNumber(string n)
{
switch(n)
{
case "March":return 1;
default: return "error";
}
}

知道的教下我

#16
wfpb2007-06-05 16:13
switch只能对整数。
#17
a84517272007-06-05 18:03
晕,原来这样啊。
那有没有办法让字符串返回数字的呢要在类里面,因为现在正学类,再简单也得用类解决啊
#18
aipb20072007-06-05 18:09
方法很多啊,

简单的,用很多if判断下,返回就好。
#19
a84517272007-06-05 23:11

晕,不会在类里面使用if判断

#20
a84517272007-06-06 18:48
inline int Month::getYear(int year)//定义一个年份如:2007,我想提取它的世纪数,提取20世纪。应该怎样?
{
return year;
}

inline void Month::getC()
{
return getYear.substr(2,2);//错在这里,我试过把getYear改成字符串类型也不行的
}

error C2228: left of '.substr' must have class/struct/union type
有人教下吗?或者用其他方法?

[此贴子已经被作者于2007-6-7 0:56:19编辑过]

1