求一道C程序设计题的做法?请高手帮忙

2025-03-01 05:11:22
推荐回答(2个)
回答1:

为了简化起见,我的第一串代码的输出格式是输出了A、B、C的饭量。望见谅!
x、y、z分别表示A、B、C的饭量
A说:xB说:x>y,x>z
C说:y这道题的意思就是,三个人每个人都给出了两个命题。饭量大的给的命题错误多,又由于饭量不相等,所以,对应的给出的命题的正确个数也不相同。他们三个中有一个人给出了两个错误的命题,还有一个人给出了一个错误的和一个正确的,剩余的一个给出了两个错误的命题。显然,由于饭量不能相等,所以A说的“x=z”显然是错的。也就是说,A说的两个命题至少有一个错的。如果用x、y、z分别表示A、B、C的饭量的话,A的饭量可能是1或者2(0表示饭量最小,1表示饭量适中,2表示饭量最大),B、C的饭量则不能立即确定。
★代码一及注释▲
#include
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的所有可能取值情况*/
  for(y=0;y<=2;y++)
   for(z=0;z<=2;z++)
    if(x!=y&&x!=z&&y!=z)/*三个人的饭量不相等,这个if语句排除饭量相等的情况*/
    {
     a=b=c=2;/*初始化为2,下面如果某个人的命题是正确的,其饭量将减去1*/
     if(x     {
      a--;
      c--;
     }
     else 
      b--;
     if(x>z)
      b--;
     if(y      c--;
     if(a!=b&&b!=c&&c!=a)
      printf("A、B、C的饭量分别为:%d、%d、%d。\n",a,b,c);/*得出实际饭量,实际饭量不相等*/
    }    
}
执行结果:A、B、C的饭量分别为:2、0、1。
★代码二●
#include
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的所有可能取值情况*/
  for(y=0;y<=2;y++)
   for(z=0;z<=2;z++)
    if(x!=y&&x!=z&&y!=z)/*三个人的饭量不相等,这个if语句排除饭量相等的情况*/
    {
     a=b=c=2;/*初始化为2,下面如果某个人的命题是正确的,其饭量将减去1*/
     if(x     {
      a--;
      c--;
     }
     else 
      b--;
     if(x>z)
      b--;
     if(y      c--;
     if(a!=b&&b!=c&&c!=a)
     {
      if(a==2)
      {
       printf("饭量最大的是:A\n");
       if(b==0)
        printf("饭量最小的是:B\n");
       else
        printf("饭量最小的是:C\n");
      }
      else if(b==2)
      {
       printf("饭量最大的是:B\n");
       if(a==0)
        printf("饭量最小的是:A\n");
       else
        printf("饭量最小的是:C\n");
      }
      else
      {
       printf("饭量最大的是:C\n");
       if(a==0)
        printf("饭量最小的是:A\n");
       else
        printf("饭量最小的是:B\n");
      }
     }
    }    
}

回答2:

为了简化起见,我的第一串代码的输出格式是输出了A、B、C的饭量。望见谅!

x、y、z分别表示A、B、C的饭量

A说:x

B说:x>y,x>z

C说:y

这道题的意思就是,三个人每个人都给出了两个命题。饭量大的给的命题错误多,又由于饭量不相等,所以,对应的给出的命题的正确个数也不相同。他们三个中有一个人给出了两个错误的命题,还有一个人给出了一个错误的和一个正确的,剩余的一个给出了两个错误的命题。显然,由于饭量不能相等,所以A说的“x=z”显然是错的。也就是说,A说的两个命题至少有一个错的。如果用x、y、z分别表示A、B、C的饭量的话,A的饭量可能是1或者2(0表示饭量最小,1表示饭量适中,2表示饭量最大),B、C的饭量则不能立即确定。

★代码一及注释▲

#include

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的所有可能取值情况*/

  for(y=0;y<=2;y++)

   for(z=0;z<=2;z++)

    if(x!=y&&x!=z&&y!=z)/*三个人的饭量不相等,这个if语句排除饭量相等的情况*/

    {

     a=b=c=2;/*初始化为2,下面如果某个人的命题是正确的,其饭量将减去1*/

     if(x

     {

      a--;

      c--;

     }

     else 

      b--;

     if(x>z)

      b--;

     if(y

      c--;

     if(a!=b&&b!=c&&c!=a)

      printf("A、B、C的饭量分别为:%d、%d、%d。\n",a,b,c);/*得出实际饭量,实际饭量不相等*/

    }    

}

执行结果:A、B、C的饭量分别为:2、0、1。

★代码二●

#include

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的所有可能取值情况*/

  for(y=0;y<=2;y++)

   for(z=0;z<=2;z++)

    if(x!=y&&x!=z&&y!=z)/*三个人的饭量不相等,这个if语句排除饭量相等的情况*/

    {

     a=b=c=2;/*初始化为2,下面如果某个人的命题是正确的,其饭量将减去1*/

     if(x

     {

      a--;

      c--;

     }

     else 

      b--;

     if(x>z)

      b--;

     if(y

      c--;

     if(a!=b&&b!=c&&c!=a)

     {

      if(a==2)

      {

       printf("饭量最大的是:A\n");

       if(b==0)

        printf("饭量最小的是:B\n");

       else

        printf("饭量最小的是:C\n");

      }

      else if(b==2)

      {

       printf("饭量最大的是:B\n");

       if(a==0)

        printf("饭量最小的是:A\n");

       else

        printf("饭量最小的是:C\n");

      }

      else

      {

       printf("饭量最大的是:C\n");

       if(a==0)

        printf("饭量最小的是:A\n");

       else

        printf("饭量最小的是:B\n");

      }

     }

    }    

}