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

为什么我的输出结果不是字符而是数字?

徐宗保 发布于 2013-09-28 19:35, 396 次点击
两个乒乓球队进行比赛,各出三人。甲队为A,B,C三人,乙队为X,Y,Z三人。已抽签决定比赛名单,有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,编程找出三对选手的对手名单。
注:使用穷举法


#include<iostream>
using namespace std;
int main()
{
    int i=0,j=0,k=0;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            for(k=0;k<3;k++)
            {
                if(i==j||j==k||k==i)
                    continue;
                if(i!=1&&k!=1&&k!=3)
                {
                                   cout<<"A vs "<<i+'X'-1<<endl;
                   cout<<"B vs "<<j+'X'-1<<endl;
                   cout<<"C vs "<<k+'X'-1<<endl;
                   return 0;
                }
            }
        }
    }
    return 0;
}
6 回复
#2
blueskiner2013-09-28 19:41
'X'在跟i j k做加法运算时转化成ascii的值了
#3
徐宗保2013-09-28 19:51
回复 2楼 blueskiner
那怎么再转回来,但是我在c中可以输出字符的,为什么vc6.0就不行了
#4
blueskiner2013-09-28 19:55
你用一个char类型的变量保存结果,再输出。
因为C++是强类型语言,流操作符 << 会根据类型输出。对类型的操作限制得很紧。不像C这么随便、这么灵活。

附上答案吧,反正不复杂。
        char c;
    c = i+'X'-1;
    std::cout<<"A vs "<<c<<std::endl;
    c = j+'X'-1;
    std::cout<<"B vs "<<c<<std::endl;
    c = k+'X'-1;
    std::cout<<"C vs "<<c<<std::endl;

[ 本帖最后由 blueskiner 于 2013-9-28 19:57 编辑 ]
#5
徐宗保2013-09-28 20:14
回复 4楼 blueskiner
没有其他简便的办法了?
#6
blueskiner2013-09-28 20:19
有,cout<<"A vs "<<(char)(i+'X'-1)<<endl;
    cout<<"B vs "<<(char)(j+'X'-1)<<endl;
    cout<<"C vs "<<(char)(k+'X'-1)<<endl;

这种做法让我觉得好蠢,底层屏蔽了转换的信息,还不如明明白白地给一个临时变量来存,除非有注释可看

    cout<<"A vs "<<(char)(i+'X'-1)<<endl;  // 将结果转换成字符显示...
    cout<<"B vs "<<(char)(j+'X'-1)<<endl;
    cout<<"C vs "<<(char)(k+'X'-1)<<endl;
#7
徐宗保2013-09-28 20:44
回复 6楼 blueskiner
哦哦,知道了,谢谢了,哥们!
1