首页 > 用户发贴区 > 编程问题提问区 > 高手们帮忙看一下这里哪出错了
2012
04-20

高手们帮忙看一下这里哪出错了

#include “stdio.h”
main()
{
  long i;
  long bonus;
scanf(“%ld”,&i);
bonus=i*0.075;
printf(“%ld”,bonus);
  getch();
}

 

高手们帮忙看一下这里哪出错了,i 输入1000,结果应该是75,但怎么也得不到75。


高手们帮忙看一下这里哪出错了》有 13 条评论

  1. 475378094 说:

    站长不给力啊,在线人好少啊,

  2. zhoulu 说:

      getch();
     
    改为getchar();  就搞定了
     

  3. zlszzu 说:

    0.075是float型的

  4. ihGYnG 说:

    你用的TurboC吗?

  5. chuanglan 说:

     
    其实大家忽略了一个很致命的问题,就是中英文输入过成中,会遇到中文格式的字符,所以会出错,这样的BUG很难找出,如果不是Tuborc的话

  6. kingyoung 说:

     

    include<stdio.h>

    int main()
    {
        int i;
        float  b;
        printf("please input a number:");
        scanf("%d",&i);
        b=i0.075;
        printf("the answer of %d
    0.075=%f",i,b);
        getchar();
    }
      用这个 就搞定了   记住要用 float浮点型

  7. chuanglan 说:

    l楼上。。。水平?

  8. cengjing 说:

    include "stdip.h"
    main()
    {   float i,bonus;
        printf("please input a number ");
        scanf("%lf",&i);
        bonus=i*0.075;
        printf("the answer is %f",bonus);
    }
    没测试  不知道有错没。。。。

  9. ai8888 说:

    include<stdio.h>

    main()
    {
    &nbsp; long i,bonus;
    &nbsp;&nbsp;
    scanf(&quot;%ld&quot;,&amp;i);
    bonus=i*0.075;
    printf(&quot;%ld&quot;,bonus);
    &nbsp; getchar();
    }

    楼主,答案就是这样啦!我验证过了。和你说的相符合。

  10. cengjing 说:

    include "stdio.h"

    main()
    {&nbsp;&nbsp; float i,bonus;
    &nbsp;&nbsp;&nbsp; printf(&quot;please input a number &quot;);&nbsp;&nbsp;
    &nbsp;scanf(&quot;%f&quot;,&amp;i);&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;bonus=i*0.075;&nbsp;
    &nbsp;printf(&quot;the answer is %f\n&quot;,bonus);
    }

  11. happy_2012_c 说:

    各位高手,我是新人。自己写了一个程序,有时候运行正常,有时候不行。能帮忙看看么?!
     
    long int fac(long int x)
    {
    if (x==1) return 1L;
    else return(xfac(x-1));
     
    }
    long int main()
    {
    long int m,n,t=0, c=1;
    printf("m,n=");
    scanf("%d,%d",&m,&n);
    if(m==n) c=1;
    else
    {
    if(m>n) c=(fac(m))/((fac(n))
    (fac(m-n)));
    else
    {
    t=m;
    m=n;
    n=t;
    c=(fac(m))/((fac(n))*(fac(m-n)));
     
    }
    }
    printf("c=%l",c);
    gets(" ");
    return 0;
    }
    输入5,3,运行正确。但是输入40,3的时候,就运行不了了。麻烦各位高手能指出哪里错了,怎么改么?!

  12. qwelsx 说:

    0.075 是 float型或着double型,long 表示 long int,大数据且带触发或小数运算,最好是把运算结果定义为double型

  13. wenshengking 说:

    各位高手,我是新人。自己写了一个程序,有时候运行正常,有时候不行。能帮忙看看么?!   long int fac(long int x) { if (x==1) return 1L; else return(xfac(x-1));   } long int main() { long int m,n,t=0, c=1; printf("m,n="); scanf("%d,%d",&m,&n); if(m==n) c=1; else { if(m>n) c=(fac(m))/((fac(n))(fac(m-n))); else { t=m; m=n; n=t; c=(fac(m))/((fac(n))(fac(m-n)));   } } printf("c=%l",c); gets(" "); return 0; } 输入5,3,运行正确。但是输入40,3的时候,就运行不了了。麻烦各位高手能指出哪里错了,怎么改么?!
    ——————————————————————————————————————————————
              没有仔细看你程序是什么功能,但你的fac()算阶乘用递归,后面还来个(fac(m))/((fac(n))
    (fac(m-n)));程序应该没有错误,算数字大了就运行不了,十有八九是你内存销耗过大,运算开销太大,至于为什么,这里一两句也说不明白,问题在这的fac()上,这种递归代码短,但效率低,开销大,越是算大数开销明显(成指数增长)。可以看看《C如指针》或《C专者编程》等,不记得那本里面,有一节专门讲了这个,讲的很清楚。
             

留下一个回复