代码改变世界

C++学习的简单问题(四)

2013-04-09 00:32  liuzq2013  阅读(436)  评论(0)    收藏  举报
问题描述
突然有一天,你忘记了今天是星期几,中国人凑吉利,所以你找来了八个人,让他们每人说两句话,第一句为今天星期几,另一句为今天不是星期几,并且两句中一句真,一句假。可能第一句是真,也可能第二句是真。最后请你确定今天是星期几,并输出。
输入格式
8行,每行是两个星期几的英文单词,用空格分开,星期几的英文不考虑大小写,即可能是大小写夹杂的单词形式(并非只有首字母大写)。
输出格式
一行英文,表示今天星期几,要求是规范的英文单词,即首字母要大写,之后小写。
#include <iostream>
#include <string>
using namespace std;

string toLower(string a)
{
    int len=a.size();
    char b;
    for(int i=0;i<len;i++)
    {
        b=a[i];
        if((int)b<97) a[i]=(char)(b+32);
    }
    return a;
}

int main()
{
    string a[7]={"monday","tuesday","wednesday","thursday","friday","saturday","sunday"};
    string b[16];
    int i,j=0;
    for(i=0;i<16;i++)
        cin>>b[i];
    i=0;
    while(i<7&&j<8)
    {
        if((toLower(b[j*2]) == a[i])+(toLower(b[j*2 + 1]) != a[i]) != 1)
        {
            i++;
            j=0;
        }
        else
            j++;
    }
    string c=a[i];
    c[0]=(char)(c[0]-32);
    cout<<c<<endl;
    return 0;
}

现在看起来有点像字符串匹配的蛮力法。