一道编程题~
我国有4大淡水湖。 A说:洞庭湖最大,洪泽最小。鄱阳湖第三。
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。
C说:洪泽湖最小,洞庭湖第三。
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
4个人每人仅答对了一个,请你编程给出4个湖从大到小的顺序
用C语言或C++编程,如何组织```需要全部过程
这段时间有人单独给九九出考题了~不能多说情况~帮忙看看就行了~
/* 我国有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编辑过]
//第一种(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; }
#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编辑过]