我也是新学的
我也是新学的,试着用学过的知识写了一个,经测试,只对四位以下数有效,我想问题应该出现在字符的类型定义方面。请各位指点迷津,不胜感激。include<stdio.h>
int main( )
{
int a,b,c,d,t;
printf("输入四个数字:");
scanf("%d %d %d %d",&a,&b,&c,&d);
if(a<b)
{
t=a;
a=b;
b=t;
}
if(a<c)
{
t=a;
a=c;
c=t;
}
if(a<d);
{
t=a;
a=b;
b=c;
}
printf("最大的数是:%d",a);
}
----------------解决方案--------------------------------------------------------
ls 你要明白int得取值范围
to StarWing83
分治和循环都比较了3次得到最大 有区别么
----------------解决方案--------------------------------------------------------
int换成long int问题可得到部分缓解.
----------------解决方案--------------------------------------------------------
21#的int只到32768好象是的如果在多就变负数了,所以会失效了
----------------解决方案--------------------------------------------------------
0111111111111111注意这个(内存),如果在加个1上去就变成1000000000000000,实际上他的值是0了,如果你的变量是带符号的话.
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]sunkaidong[/underline][/bold] 于 2008-1-15 22:29 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1181289&ptid=196646][/url]
21#的int只到32768好象是的如果在多就变负数了,所以会失效了
21#的int只到32768好象是的如果在多就变负数了,所以会失效了
请注意编译器的位数
如果用32bits 的(如GCC) int的范围可以到2^31
用16bits的(如TC) int范围到2^15
如果用64bits编译器编译,范围可以到2^63
----------------解决方案--------------------------------------------------------
#include <stdio.h>
int main(void)
{
int temp, max, k;
if((k = scanf("%d", &temp) == 1)
max = k;
while(k == 1)
{
k = scanf("%d", &temp);
max = temp > max ? temp : max;
}
printf("\n Max = %d\n", max);
return 0;
}
----------------解决方案--------------------------------------------------------
晕。。。
编程都是靠自己体会。。
代码是死的。。
算法是活的。。。。
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]StarWing83[/underline][/bold] 于 2008-1-11 16:14 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1178254&ptid=196646][/url]
循环效率是O(n),10楼分治求最大,效率可以提升到O(logn)呢……
循环效率是O(n),10楼分治求最大,效率可以提升到O(logn)呢……
求最大数不可能有优于O(n)的算法
----------------解决方案--------------------------------------------------------