c语言比较大小的函数,如何全部比较

max(int x,int y)
{
int z;
z =(x>y)?x:y;
return z;
}
main()
{
int a,b,c,d,e,f,g,h,j;
scanf("%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h,&j);
g =max(a,b);
h =max(c,d);
j =max(e,f);
printf("abcdef da shi%d",j);
getch();
}

如果按你的方法来比较大小,而且是7个数字,也就是a~g,你后面少比较了g,而且最后的j也未必是最大,需要改为:
main()
{
int a,b,c,d,e,f,g,h,j;
scanf("%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g); //这里读到g即可,后面没用的
a = max(a,b); //不能把g的值覆盖了,7个数,g还有存储数据呢
h = max(c,d);
j = max(e,f);
a = max(a,g); //还要和g比较
h = max(a,h); //接着还要比较a和h谁大
j = max(h,j); //这个才是最后结果,最大的一个
printf("abcdef da shi%d",j);
getch();
}

如果要比较大小的数比较多,建议使用数组存储,用个for循环就搞定了,如下:
#include <stdio.h>
void main()
{
int i, a[7], max = -32768;
for (i = 0; i < 7; i++)
{
scanf ("%d", a[i]);
if (a[i] > max) max = a[i];
}
printf ("max number is %d\n", max);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-05

思路:定义一个返回值为int的比较函数fun,参数有两个,一个是需要比较的数组a,另一个是数组a的大小,函数返回的是数组中最大的那个数。

参考代码:

//参考代码 
#include<stdio.h>
#define N 5
int fun(int a[],int n){
int i,max;
max=a[0];
for(i=1;i<n;i++){
if(max<a[i])
max=a[i];
}
return max;
}
int main()
{
int a[N],i,max;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
max=fun(a,N);
printf("%d",max); 
    return 0;
}
/*
运行结果:
5 4 6 8 7
8
*/

第2个回答  2013-08-27
用数组,把你输入的要进行比较的7个数字放到一个数组,再用冒泡法排序就能搞定。
第3个回答  2013-08-27
a=max(a,b);
c=max(c,d);
e=max(e,f);
g=max(g,h);
a=max(a,c);
e=max(e,g);
a=max(a,e);
j=max(j,a);
第4个回答  2015-10-14
假定是比较整数
int sortab(int a,int b)
{int c ;
if(a>b) c=1;
else if(a==b)c=0;
else c=-1;
return c;
}
给定2数,如果前数大得到1,后数大得到-1,相等得到0