| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4000 人关注过本帖
标题:我国有4大淡水湖。
只看楼主 加入收藏
xutaogo
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-12-6
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
我国有4大淡水湖。
我国有4大淡水湖。
A说:洞庭湖最大,洪泽最小。鄱阳湖第三。
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。
C说:洪泽湖最小,洞庭湖第三。
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
4个人每人仅答对了一个,请你编程给出4个湖从大到小的顺序

用C语言或C++编程,我晓得部分语言但不晓得如何组织```需要全部过程
搜索更多相关主题的帖子: 鄱阳湖 洞庭湖 洪泽湖 淡水湖 C语言 
2013-12-06 23:35
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:7 
给你个思路吧
假设 洪泽湖为 H,洞庭湖为D,鄱阳湖 P。太湖T。

那么,把HDPT 四个字母的所有排列 枚举出来放到一个字符串内,比如order,然后对ABCD 四人的判断进行检查

比如检查a,返回答对的次数
int CheckA(char order[4])
{
// A说:洞庭湖最大,洪泽最小。鄱阳湖第三。
    int result = 0;
    if (order[0] == 'D') { // 洞庭湖最大
        result++;
    }

    if (order[3] == 'H') { //洪泽最小
        result++;
    }

    if (order[2] == 'P') { //鄱阳湖第三
        result++;
    }

    return result;
}

同理
int CheckB(char order[4])
{
 //B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。
    int result = 0;
    if (order[0] == 'H') result++;   
    if (order[3] == 'D') result++;   
    if (order[1] == 'P') result++;   
    if (order[2] == 'T') result++;
   
    return result;
}

int CheckC(char order[4])
{
   //C说:洪泽湖最小,洞庭湖第三。
    int result = 0;
    if (order[3] == 'H') result++;   
    if (order[2] == 'D') result++;
  
    return result;
}

int CheckD(char order[4])
{
   //D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
    int result = 0;
    if (order[0] == 'P') result++;   
    if (order[3] == 'T') result++;
    if (order[1] == 'H') result++;   
    if (order[2] == 'D') result++;
  
    return result;
}


然后,由于每个人都是答对一个,所以只有check abcd 都是返回1 的答案才是正确的
所以

bool CheckOrder(char order[4])
{
     if ((CheckA(order) == 1) &&
         (CheckB(order) == 1) &&
         (CheckC(order) == 1) &&
         (CheckD(order) == 1) ) {
          // 这个就是正确的顺序了
          return true;
     }
     
     return false;
}

void main()
{
    char order[4] = {0};
    for ('H'、'D'、'P'、'T' 四个字母进行排列组合,组合到order) {
        if (CheckOrder(order)) {
             // 这个地方就是正确的顺序了
             printf("正确顺序:%c、%c、%c、%c.", order[0],order[1],order[2],order[3],);
        }   
    }
}

至于把HDPT 四个字母的所有组合枚举的算法,你自己写吧,这个难度不大了


[ 本帖最后由 yuccn 于 2013-12-7 09:31 编辑 ]

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-12-07 09:25
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-12-07 09:45
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
稍微改下把他对应成湖的名字就行了

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-12-07 09:46
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:7 
受教了,以下是一位大牛的实现代码,看懂了贴出来,网址http://blog.

题目:
我国有4大淡水湖。
A说:洞庭湖最大,洪泽湖最小。鄱阳湖第三。
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三
C说:洪泽湖最小,洞庭湖第三。
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
4个人每人仅答对了一个,请你编程给出4个湖从大到小的顺序

程序:
#include<iostream>                              //预编译命令  
using namespace std;   
int main()                                          //主函数  
{                                               //主函数开始  
    int Dt,Hz,Py,Th,sum[4]={0};     //定义变量  
    char lake[5][10];  
//Dt表示洞庭湖,Hz表示洪泽湖,Py表示鄱阳湖,Th表示太湖  
//穷举四大湖排名的所有可能,用1、2、3、4分别来表示它们的大小关系  
//1最大,4最小  
    for(Dt=1; Dt<=4; Dt++)  
    {  
        for(Hz=1; Hz<=4; Hz++)  
        {  
            if(Dt==Hz) continue;//湖的面积各不相同  
            for(Py=1; Py<=4; Py++)  
            {  
                if(Py==Hz || Py==Dt) continue;//湖的面积各不相同  
                    Th=10-Dt-Hz-Py;//计算太湖的排名  
      
                sum[0]= (1==Dt) + (4==Hz) + (3==Py);//A说的话  
                sum[1]= (1==Hz) + (4==Dt) + (2==Py) + (3==Th);//B说的话  
                sum[2]= (4==Hz) + (3==Dt);//C说的话  
                sum[3]= (1==Py) + (4==Th) + (2==Hz) + (3==Dt);//D说的话  
                  
                if(sum[0]==1 && sum[1]==1 && sum[2]==1 && sum[3]==1)  
                {  
                    strcpy (lake[Dt], "洞庭湖");//按排名赋值  
                    strcpy (lake[Hz], "洪泽湖");  
                    strcpy (lake[Py], "鄱阳湖");  
                    strcpy (lake[Th], "太湖");  
                }  
  
            }  
        }  
    }  
    for(int i=1;i<=4;i++)  
    {  
        cout<<lake[i]<<endl;//从大到小输出  
    }  
    return 0;//主函数结束  
}  
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 小小战士 于 2013-12-7 11:07 编辑 ]

小小战士,战士中的战斗机!
2013-12-07 10:57
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:7 
设计思想一样

www.qunxingw.wang
2013-12-07 14:09
快速回复:我国有4大淡水湖。
数据加载中...
 
   



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

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