当前位置: 代码迷 >> C语言 >> 新学C,给4个数,输出其中最大的,请各路大虾给讲解。
  详细解决方案

新学C,给4个数,输出其中最大的,请各路大虾给讲解。

热度:105   发布时间:2008-01-11 18:23:15.0
我也是新学的
我也是新学的,试着用学过的知识写了一个,经测试,只对四位以下数有效,我想问题应该出现在字符的类型定义方面。请各位指点迷津,不胜感激。


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好象是的如果在多就变负数了,所以会失效了

请注意编译器的位数
如果用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)的算法
----------------解决方案--------------------------------------------------------
  相关解决方案