c 编程:求饭量最大和最小者

作者&投稿:止殃 (若有异议请与网页底部的电邮联系)
c++编程 比较饭量的问题~

既然数量只有3个人,那就枚举3个人的所有排列顺序也就是6种,方法可以是
char Order[4][] = {"123","132","213","231","312","321"};
然后对每一种顺序,计算3个人说对或者说错的句子个数并检验是否吻合“饭量越小的人讲对的话越多”
如果吻合就输出那个排列
计算机搜索是不会考虑大量if语句的

这么难的问题,去C编写论坛或者QQ群中找答案吧!!

// 设a,b,c 最大者的值是3,最小者的值是1,中间为2。
// 说对一句得1分,得分存放在ma,mb,mc
// 题目限定3人饭量不等,
// 所以,a!=b!=c, ma!=mb!=mc
// 饭量最小的得分2,饭量最大的得分0;
// A说“C和我吃得一样多”--错了,所以只可能B和C说的全对,按B,a=3, 按C,c=3:

#include<stdio.h>
#include<stdlib.h>

void main()
{
int ma=0,mb=0,mc=0;
int a,b,c;
int X,Y;

// possible A max or C max

a=3;
for (b=1;b<=2;b=b+1){
ma =0;mb=0;mc=0;
for (c=1;c<=2;c=c+1)
{
if (a==b || a == c || b == c) goto Lab;
if (b > a) ma = ma + 1;
if (c == a) ma = ma + 1;
if (a > b) mb = mb+1;
if ( a > c) mb = mb+1;
if (c > b) mc = mc + 1;
if (b > a) mc = mc +1;
if (ma != mb && ma !=mc && mb != mc) {
printf("a=%d b=%d c=%d ma=%d mb=%d mc=%d\n",a,b,c,ma,mb,mc);
if (c<b && mc == 2) printf("X is A and Y is C\n") ;
if (c > b && mb == 2) printf("X is A and Y is B\n"); ;
}

Lab:;
}

}

c=3;
for (b=1;b<=2;b++){
ma=0;mb=0;mc=0;
for (a=1;a<=2;a++)
{
if (a==b || a == c || b == c) goto Lab2;
if (b > a) ma = ma + 1;
if (c == a) ma = ma + 1;
if (a > b) mb = mb+1;
if ( a > c) mb = mb+1;
if (c > b) mc = mc + 1;
if (b > a) mc = mc +1;
if (ma != mb && ma !=mc && mb != mc) {
printf("a=%d b=%d c=%d ma=%d mb=%d mc=%d\n",a,b,c,ma,mb,mc);
if (a<b && ma ==2) printf("X is C and Y is A\n");
if (a > b && mb == 2) printf("X is C and Y is B\n");
};
Lab2:;
}
}
}

// 答案:X is A and Y is B

/* 问题分析:*/
/* 没人说了两句话,依题意,饭量最小的说了两句真话, */
/* 饭量中等的说了一句真话,饭量最大的说的全部是假话。 */
/* 所以用逻辑判断法,越说自己能吃越是假话... */
#incldue <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
char x,y,z;
int max,med,min,a,b,c;
int aFalse,bFalse,cFalse;

for(aFalse=1;aFalse<=2;aFalse++) /* 因为3人饭量各不相同,所以A至少有一句是假话,从1穷举至2 */
{
if(aFalse==1)
{
b=3;
a=1;
}
if(aFalse==2)
{
b=1;
a=3;
}
for(bFalse=0;bFalse<=2;bFalse++)
{
if(bFalse==0)
{
... ...
}
if(bFalse==1)
{
... ...
}
if(bFalse==2)
{
... ...
}
for(cFalse=0;cFalse<=2;cFalse++)
{
... ...
}
}
}
}

我是这样构思的...
很不好意思你看这样你能不能完成...
今天我还有别的事情要做...
改天帮你再看看好不好...
先这样了...
你可以参考看看...
另外可以新定义几个标志位以实现


常德市13662188634: c 编程:求饭量最大和最小者 -
慈刷氨甲: /* 问题分析:*//* 没人说了两句话,依题意,饭量最小的说了两句真话, *//* 饭量中等的说了一句真话,饭量最大的说的全部是假话. *//* 所以用逻辑判断法,越说自己能吃越是假话... */#incldue #include #include main() { char x,y,z; int max,med,...

常德市13662188634: C语言 看谁吃的多!!!!!!!!! -
慈刷氨甲: #include<stdio.h> void main() { int A,A1=0, B,B1=0, C,C1=0; for(A=0; A<3;A++) // abc取值范围是012 就能满足 表示 abc 之间的关系了 for(B=0; B<3;B++) for(C=0; C<3;C++) { A1 += B-A>0?1:0; A1+=(C==A?1:0); //A1 表示 A说对的个数..B1, C1同A...

常德市13662188634: 关于c语言逻辑问题.谁饭量大?? -
慈刷氨甲: #include<stdio.h> int main() { int a,b,c,x,y,z; printf("a,b,c\n"); for(a=1; a<=3; a++) for(b=1; b<=3; b++) for(c=1; c<=3; c++) { x=(b>a)+(a==c); y=(a>b)+(a>c); z=(c>b)+(b>a); if(x>=y&&y>=z&&a>=b&&b>=c) { printf("%d,%d,%d\n",a,b,c); } if(x>=z&&z...

常德市13662188634: 一道逻辑推理编程题 -
慈刷氨甲: 这是代码,附带每层解释,好好看吧!! #include<stdio.h> void main() { int x,y,z;/*x、y、z分别表示A、B、C可能的饭量*/ int a,b,c;/*a、b、c分别表示经过判断后得出的A、B、C实际的饭量*/ for(x=1;x<=2;x++)/*穷举x、y、z的所有可能取值情况...

常德市13662188634: c++编程 比较饭量的问题 -
慈刷氨甲: 既然数量只有3个人,那就枚举3个人的所有排列顺序也就是6种,方法可以是 char Order[4][] = {"123","132","213","231","312","321"}; 然后对每一种顺序,计算3个人说对或者说错的句子个数并检验是否吻合“饭量越小的人讲对的话越多” 如果吻合就输出那个排列 计算机搜索是不会考虑大量if语句的

常德市13662188634: 怎样编写一个求3个数中最大者和最小值的编程 -
慈刷氨甲: #include main() { int a,b,c,max,min; printf("Please input three numbers:\n"); scanf("%d%d%d",&a,&b,&c); if(a>b) {max=a;min=b;} else {max=b;min=a;} if(max else if(min>c) min=c; printf("max=%d,min=%d\n",max,min); }

常德市13662188634: 编写程序,分三次求最大者,最小者,和 -
慈刷氨甲: 源程序如下: #include int max (int x,int y); int min (int x,int y); int add (int x,int y); void process (int x,int y,int(*fun)(int,int)); void main() { int a,b; cout>a>>b; couty?x:y); } int min(int x,int y) { return(x

常德市13662188634: 用c语言找最大值和最小值 -
慈刷氨甲: 楼主是要实现键盘输入一些整型数据,然后找出其中最大者和最小者,然后输出最大者和最小者吗? 如果是的,我给你编一个啊!呵呵 #include <stdio.h> void main() { int a[10],i; printf("Please enter the ten number:\n"); /*我这里先简单设为十...

常德市13662188634: 用c编程 输出一维数组的最大值和最小值的和 -
慈刷氨甲:#include //#include int main() {int n, i, max, min, a[100];printf("要输入几个数字:");scanf("%d", &n);printf("请输入%d个数:\n", n);for(i=0;i scanf("%d", &a[i]);max = min = a[0]; //先让最小和最大都为第一个数,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网