C语言-编程实例-跳水排名

  • 来源: 软学网 作者: 若水   2008-03-29/15:40
  •            问题描述:5位跳水高手参加10米高台跳水决赛,有好事者让5人据实力预测比赛结果.

    A选手说:B第二,我第三;

    B选手说:我第二,E第四;

    C选手说:我第一,D第二;

    D选手说:C最后,我第三;

    E选手说:我第四,A第一.

    决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错.请编程解出

    比赛的实际名次.

    解答:

    (1)解题的重要一步是要将人的想法表示成机器能够实现的表达式,数学公式或操作

    步骤.

    (2)用计算机解题很多时候涉及到逻辑运算.

    (3)用计算机解题往往从很多种可能性中寻找其中的一种或几种,应此最容易想到的

    是枚举法,枚举法就会遇到大量的重复计算的问题,自然要用到循环结构,我在

    程序中用了五重循环,想不用循环,却没能实现,欢迎大家提供不用循环的更好

    的解法,我的QQ 348653994

    (4)程序在VC 6.0下通过.

    (5)运行结果:

    A的名次是:3

    B的名次是:1

    C的名次是:5

    D的名次是:2

    E的名次是:4

    程序原码:

    #include <ioseam.h>
    void main()
    {
    int cc1,cc2,cc3,cc4,cc5; //cc1到cc5代表5位选手的逻辑判断
    int i,j,k,m,n; //i,j,k,m,n用于循环控制
    int A,B,C,D,E; //A,B,C,D,E分别代表5位选手的名次
    int g; //问题是否解决的BOOL值
    A=0;B=0;C=0;D=0;E=0;g=0;
    for(i=1;i<=5,A<=4;i )
    { A ;
    B=0;
    for(j=1;j<=5,B<=4;j )
    {
    B ;
    if(B==A)
    B ;
    C=0;
    for(k=1;k<=5,C<=4;k )
    { C ;
    if(C==A)
    C ;
    if(C==B)
    C ;
    D=0;
    for(m=1;m<=5,D<=4;m )
    { D ;
    if(D==A)
    D ;
    if(D==B)
    D ;
    if(D==C)
    D ;
    E=0;
    for(n=1;n<=5,E<=4;n )
    { E ;
    if(E==A)
    E ;
    if(E==B)
    E ;
    if(E==C)
    E ;
    if(E==D)
    E ;

    cc1=((B==2)&&(!(A==3)))||((!(B==2))&&(A==3));
    cc2=((B==2)&&(!(E==4)))||((!(B==2))&&(E==4));
    cc3=((C==1)&&(!(D==2)))||((!(C==1))&&(D==2));
    cc4=((C==5)&&(!(D==3)))||((!(C==5))&&(D==3));
    cc5=((E==4)&&(!(A==1)))||((!(E==4))&&(A==1));
    if((cc1 cc2 cc3 cc4 cc5)==5)
    { g=1;
    cout<<"A的名次是:"<<A<<endl;
    cout<<"B的名次是:"<<B<<endl;
    cout<<"C的名次是:"<<C<<endl;
    cout<<"D的名次是:"<<D<<endl;
    cout<<"E的名次是:"<<E<<endl;

    }
    }
    }
    }
    }
    }

    if(g!=1)
    cout<<"Can't found!"<<endl;
    }


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多