问题描述
- 本人编程初学,刚刚编写了一个整数的比较大小的小程序,希望大神帮我看看
-
希望大神帮我看一下是不是可以比较整数的所有情况,而且此算法有点复杂,可以怎样简化
#includeint main()
{
int compare(int a,int b);
int x,y,c,g;
printf("请输入两个整形数用于比较大小:n");
scanf("%d,%d",&x,&y);
c=compare(x,y);
if(c==g)
printf("errorn");
else
printf("较大的数为 %d n",c);
return 0;
}int compare(int a,int b)
{
int k,g;
if(a-b>0)
k=a;
if(a-b<0)
k=b;
if(a-b==0)
k=g;
return (k);
}
解决方案
问题很多O_O!
你那个声明int compare(int a,int b);能放到全局上吗?
if(c==g) 这个根本就是乱来的compare(x,y)这个函数的g根本就不会传出来,基础有待提高!
两个数求大者一句话就行了:max = a>b?a:b
建议多看下基础的书籍
解决方案二:
直接
int compare(int a,int b)
{
return a- b;
}
解决方案三:
g是什么?如果你没有初始化,那么当a==b的时候,返回的结果是不确定的。
解决方案四:
//孩子,你的路还很长。
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b); //输入
if(a>b) printf("%d",a); //a比b大
else printf("%d",b); //a小于等于b
return 0;
}
//真的,就这么简单,还可以更短(用?:运算符)
解决方案五:
思路是合适的,享用跟简单的方式,调库函数吧
解决方案六:
#define max(a,b)
({ typeof (a) a = (a);
__typeof_ (b) _b = (b);
_a > _b ? _a : _b; })
这里使用macro,可以支持不同数据类型。
对于YLOIHyl在这里说“你的路很长”,我的建议是不用写这种东西,因为我们每个人到perfect都还有很长的路要走,大家把自己觉得最好的代码贴出来共享,互相学习,共同进步。