user-0 提问: 刚学C 麻烦大神帮我看下程序没错误 为什么不能输出结果 要哭了

回复:
user: user-1
content: 求三个数最大值有两种方法，更具方法不同则函数参数对象不同。 求a.b.c中的最大值可以写成max(max(a,b),c)或者是max(a,b,c)。 两种都可以，只是两种的max函数的参数是不一样的。一个max函数的参数只有两个，第二个max函数的参数是3个。前一个是先将函数max（a，b）运算完后，在将得到的返回值作为一个参数放入max这个函数中，后一个是直接将三个参数放入函数进行运算。 你这个是第二种形式，套用max函数，但是你自己设置的参数不对，所以运行失败。 #include <stdio.h>   main() { int i,j,max,min,a[3],t; printf("请输入a,b,c的值:"); for (i=0;i<3;i++) {scanf("%d",&a[i]); }for(i=0;i<2;i++) for(j=0;j<2-i;j++) if(a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; }printf("最大值为%d\n",a[0]); printf("最小值为%d\n",a[2]);}    /*=======================*/ #include <stdio.h>  main() { int i,j,max,min,t,a,b,c;printf("请输入a,b,c的值:");scanf("%d%d%d",&a,&b,&c); max=min=a; if(b>max)max=b;   else if(b<min)min=b; if(c>max)max=c;   else if(c<min)min=c; printf("最大值为%d\n",max); printf("最小值为%d\n",min);} 以上是两种方式的运行代码

user: user-2
content: 【// 要在a，b，c中找出最大数，只有a，b，c三个值 哪个最大就取哪个的值 int max(int x, int y, int z);    //对被调用函数进行声明】 ↑↑↑这个有点讲究的。 求a.b.c中的最大值可以写成max(max(a,b),c)或者是max(a,b,c)。 两种都可以，只是两种的max函数的参数是不一样的。一个max函数的参数只有两个，第二个max函数的参数是3个。前一个是先将函数max（a，b）运算完后，在将得到的返回值作为一个参数放入max这个函数中，后一个是直接将三个参数放入函数进行运算。 你这个是第二种形式，套用max函数，但是你自己设置的参数不对，所以运行失败。 #include <stdio.h>   main() { int i,j,max,min,a[3],t; printf("请输入a,b,c的值:"); for (i=0;i<3;i++) {scanf("%d",&a[i]); }for(i=0;i<2;i++) for(j=0;j<2-i;j++) if(a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; }printf("最大值为%d\n",a[0]); printf("最小值为%d\n",a[2]);}   /*=======================*/ #include <stdio.h>  main() { int i,j,max,min,t,a,b,c;printf("请输入a,b,c的值:");scanf("%d%d%d",&a,&b,&c); max=min=a; if(b>max)max=b;   else if(b<min)min=b; if(c>max)max=c;   else if(c<min)min=c; printf("最大值为%d\n",max); printf("最小值为%d\n",min);}  这是两种不同形式，你可以参考一下，麻烦给个赞

user: user-3
content: if (x > y > z);   /* 若x大于y大于z成立，则将x的值赋给q*/  q = x;  写成   if(x>y&&x>z)      q=x;  剩下两个也这样改， 你的写法得到FALSE, 没法给 q 赋值。

user: user-4
content: 函数声名写在主函数外面， x＞y＞z 不能这样写，改成x ＞ y && y＞z

user: user-5
content: 等待你输入，输入后数据比较后才会输出

user: user-6
content: # include<stdio.h>  int max(int x, int y, int z);    //对被调用函数进行声明 int main() {      int a = 2,b = 3,c = 6,d;      scanf("%d,%d,%d",&a, &b, &c);      printf("a = %d, b = %d, c = %d\n", a, b, c);     d = max(a,b,c);      printf("max =%d\n",d);      return 0; } int max(int x, int y, int z) {      if (x > y) {         if (x > z)             return x;         else             return z;     } else {         if (y > z)             return y;         else             return z;     }     if (x > z) {         if (x > y)             return x;         else             return y;     } else {         if (z > y)             return z;         else             return y;     }      if (y > z) {         if (y > x)             return y;         else             return x;     } else {         if (z > x)             return z;         else             return x;     }  /*     int q;       //max函数中的声明部分，定义本函数中用到的变量q为整形     if (x > y > z);   // 若x大于y大于z成立，则将x的值赋给q     q = x;     if (y > x > z);   //若y大于x大于z成立，则将y的值赋给q     q = y;     if (z > x > y);  //若z大于x大于y成立，则将z的值赋给q     q = z;     return(q);   //将q的值作为max函数值 返还到调用max函数的位置 */ }   另个问题: 问题1：判断表达式x > y > z是不对的，判断的语法不是这样的，详见上面的代码； 问题2：scanf是格式化输入，输入时注意加上逗号。发现逗号有中文字符，因此要么改成英文，要么输入时输入中文逗号。在scanf之后加一句打印输出，保证输入的内容和接收到一致。