| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1705 人关注过本帖, 3 人收藏
标题:一道编程题~
取消只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏(3)
已结贴  问题点数:20 回复次数:6 
一道编程题~
我国有4大淡水湖。
A说:洞庭湖最大,洪泽最小。鄱阳湖第三。
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。
C说:洪泽湖最小,洞庭湖第三。
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
4个人每人仅答对了一个,请你编程给出4个湖从大到小的顺序
用C语言或C++编程,如何组织```需要全部过程

这段时间有人单独给九九出考题了~不能多说情况~帮忙看看就行了~
搜索更多相关主题的帖子: 鄱阳湖 洞庭湖 洪泽湖 淡水湖 C语言 
2017-02-09 11:13
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
九九的代码~

程序代码:
/*
我国有4大淡水湖。 
A说:洞庭湖最大,洪泽最小。鄱阳湖第三。
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。 
C说:洪泽湖最小,洞庭湖第三。 
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。 
4个人每人仅答对了一个,请你编程给出4个湖从大到小的顺序
用C语言或C++编程,如何组织```需要全部过程
*/
#include<stdio.h>
int main()
{
    char *p[]={"洞庭湖","洪泽湖","鄱阳湖","太湖"};
    int a[24][4]=
    {
        {1,2,3,4},{1,2,4,3},{1,3,2,4},{1,3,4,2},{1,4,2,3},{1,4,3,2},
        {2,1,3,4},{2,1,4,3},{2,3,1,4},{2,3,4,1},{2,4,1,3},{2,4,3,1},
        {3,1,2,4},{3,1,4,2},{3,2,1,4},{3,2,4,1},{3,4,1,2},{3,4,2,1},
        {4,1,2,3},{4,1,3,2},{4,2,1,3},{4,2,3,1},{4,3,1,2},{4,3,2,1}
    };

    int i=0;
    int j=0;

    for (i=0;i<24;i++)
    {
        int flag=0;

        if (((a[i][0]==1)+(a[i][1]==4)+(a[i][2]==3))==1)
            flag++;

        if (((a[i][1]==1)+(a[i][0]==4)+(a[i][2]==2)+(a[i][3]==3))==1)
            flag++;

        if (((a[i][1]==4)+(a[i][0]==3))==1)
            flag++;

        if (((a[i][2]==1)+(a[i][3]==4)+(a[i][1]==2)+(a[i][0]==3))==1)
            flag++;

        if (flag==4)
            for (j=0;j<4;j++)
                printf("%-10s%d\n",p[j],a[i][j]);
    }

    return 0;
}


[此贴子已经被作者于2017-2-9 15:32编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-09 14:07
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
献上出题人提供的答案~

程序代码:
//第一种(C++):
#include //预编译命令
using namespace std; 
int main() //主函数
{ //主函数开始
int Dt,Hz,Py,Th,sum[4]={0,0,0,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++){
coutlake[i]endl;//从大到小输出
}
return 0;//主函数结束
}
//第二种(c语言):
#include
int main(void)
{
int a,b,c,d; /*四湖的顺序数,分别表示洞庭湖,洪泽湖,鄱阳湖,太湖*/
for(a=1;a5;a++) /*对四湖排名分别赋值*/
for(b=1;b5;b++) 
for(c=1;c5;c++)
for(d=1;d5;d++) 
if(a+b+c+d==10&&a*b*c*d==24) /*限定abcd的值互不相等,即不出现并列的情况*/ 
if(a==1&&b!=4&&c!=3||a!=1&&b==4&&c!=3||a!=1&&b!=4&&c==3) /*A的话*/
if(b==1&&a!=4&&c!=2&&d!=3||b!=1&&a==4&&c!=2&&d!=3 ||b!=1&&a!=4&&c==2&&d!=3||b!=1&&a!=4&&c!=2&&d==3) /*B的话*/
if(b==4&&a!=3||b!=4&&a==3) /*C的话*/ 
if(c==1&&d!=4&&b!=2&&a!=3||c!=1&&d==4&&b!=2&&a!=3 ||c!=1&&d!=4&&b==2&&a!=3||c!=1&&d!=4&&b!=2&&a==3) /*D的话*/ 
printf("四湖的大小顺序:\n洞庭湖:%d\n洪泽湖:%d\n鄱阳湖:%d\n太湖:%d\n",a,b,c,d);
return 0;
}


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-09 14:13
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 4楼 炎天
怎么答案有两个?看看九九的哪里出问题了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-09 14:16
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
最新更正一下~曾经引用5楼代码的注意一下~原来输出结果有问题,现在已经改正~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-09 15:28
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
再把原来的代码略加优化~

程序代码:
#include<stdio.h>
int main()
{
    char *p[]={"洞庭湖","洪泽湖","鄱阳湖","太湖"};
    int a[24][4]=
    {
        {1,2,3,4},{1,2,4,3},{1,3,2,4},{1,3,4,2},{1,4,2,3},{1,4,3,2},
        {2,1,3,4},{2,1,4,3},{2,3,1,4},{2,3,4,1},{2,4,1,3},{2,4,3,1},
        {3,1,2,4},{3,1,4,2},{3,2,1,4},{3,2,4,1},{3,4,1,2},{3,4,2,1},
        {4,1,2,3},{4,1,3,2},{4,2,1,3},{4,2,3,1},{4,3,1,2},{4,3,2,1}
    };

    int i=0;

    for (i=0;i<24;i++)
    {
        int j=0;

        if (((a[i][0]==1)+(a[i][1]==4)+(a[i][2]==3))!=1)
            continue;

        if (((a[i][1]==1)+(a[i][0]==4)+(a[i][2]==2)+(a[i][3]==3))!=1)
            continue;

        if (((a[i][1]==4)+(a[i][0]==3))!=1)
            continue;

        if (((a[i][2]==1)+(a[i][3]==4)+(a[i][1]==2)+(a[i][0]==3))!=1)
            continue;

        for (j=0;j<4;j++)
            printf("%-10s%d\n",p[j],a[i][j]);
    }

    return 0;
}




[此贴子已经被作者于2017-2-9 16:05编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-09 16:03
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
其实据说那是大四的题目,说真的其实不算难,不过大家提供了这么多种方法和思维方式,学习了,谢谢大家。

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-10 21:38
快速回复:一道编程题~
数据加载中...
 
   



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

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