| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 440 人关注过本帖
标题:为什么只有前面的那两个if语句能用,后面的都是按照第二个if语句进行的,是 ...
只看楼主 加入收藏
新手1名
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-11-18
结帖率:100%
收藏
 问题点数:0 回复次数:2 
为什么只有前面的那两个if语句能用,后面的都是按照第二个if语句进行的,是判别有误,还是if语句错了
#include<stdio.h>         
int main()               
{long long a,b,sum;char ch;clrscr();(我是用turbo c的,估计就教学用的了)
 do
 {printf("\nPleas input your a mouth money:\n");
  scanf("%ld",&a);
  b=a-1260;
   if(b<=0)
     sum=0;(可以用)
    else if(0<b<=500)(可以用)
    sum=(b*0.05);
    else if(500<b<=2000)(从这里开始都是按第二个计算,后面都没用了)
     sum=((500*0.05)+((b-500)*0.1));
    else if(2000<b<=5000)
     sum=(500*0.05)+(1500*0.1)+((b-2000)*0.15);
    else if(5000<b<=20000)
     sum=(500*0.05)+(1500*0.1)+(3000*0.15)+((b-5000)*0.2);
    else if(20000<b<=40000)(为什么从这里开始说我超出常量呢??可我用int,long,double,float,long long,都是这样的)  
     sum=(500*0.05)+(1500*0.1)+(3000*0.15)+(15000*0.2)+((b-20000)*0.25);
    else if(40000<b<=60000)
     sum=(500*0.05)+(1500*0.1)+(3000*0.15)+(15000*0.2)+(20000*0.25)+((b-40000)*0.3);
    else if(60000<b<=80000)
    sum=(500*0.05)+(1500*0.1)+(3000*0.15)+(15000*0.2)+(20000*0.25)+(20000*0.3)+((b-60000)*0.35);
    else if(80000<b<=100000)
    sum=(500*0.05)+(1500*0.1)+(3000*0.15)+(15000*0.2)+(20000*0.25)+(20000*0.3)+(20000*0.35)+((b-80000)*0.4);
    else if(b>100000)
    sum=(500*0.05)+(1500*0.1)+(3000*0.15)+(15000*0.2)+(20000*0.25)+(20000*0.3)+(20000*0.35)+(20000*0.4)+(20000*0.45);

  printf("\nShoud is %ld\n",sum);
  printf("\ncontinur?(anyker/n)\n");
  ch=getch();
 }while(ch!='n');
  return 0;
}
搜索更多相关主题的帖子: include money 教学 
2013-12-22 17:39
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
#include<stdio.h>         
int main()               
{
    float  a,b,sum;
    char ch; //(我是用turbo c的,估计就教学用的了)
    do
    {
        printf("\nPleas input your a mouth money:\n");
        scanf("%f",&a);
        b=a-1260;
        if(b<=0)
            sum=0;//(可以用)
        else if(b<=500)//(可以用)
            sum=b*0.05;
        else if(b<=2000)//(从这里开始都是按第二个计算,后面都没用了)
            sum=((500*0.05)+((b-500)*0.1));
        else if(b<=5000)
            sum=(500*0.05)+(1500*0.1)+((b-2000)*0.15);
        else if(b<=20000)
            sum=(500*0.05)+(1500*0.1)+(3000*0.15)+((b-5000)*0.2);
        else if(b<=40000)//(为什么从这里开始说我超出常量呢??可我用int,long,double,float,long long,都是这样的)  
            sum=(500*0.05)+(1500*0.1)+(3000*0.15)+(15000*0.2)+((b-20000)*0.25);
        else if(b<=60000)
            sum=(500*0.05)+(1500*0.1)+(3000*0.15)+(15000*0.2)+(20000*0.25)+((b-40000)*0.3);
        else if(b<=80000)
            sum=(500*0.05)+(1500*0.1)+(3000*0.15)+(15000*0.2)+(20000*0.25)+(20000*0.3)+((b-60000)*0.35);
        else if(b<=100000)
            sum=(500*0.05)+(1500*0.1)+(3000*0.15)+(15000*0.2)+(20000*0.25)+(20000*0.3)+(20000*0.35)+((b-80000)*0.4);
        else if(b>100000)
            sum=(500*0.05)+(1500*0.1)+(3000*0.15)+(15000*0.2)+(20000*0.25)+(20000*0.3)+(20000*0.35)+(20000*0.4)+(20000*0.45);

        printf("\nShoud is %f\n",sum);
        printf("\nContinue?(answer:y or n?)\n");
        ch=getchar();
        getchar();
    }while(ch!='n');
    return 0;
}

//1.定义:long long a,b,sum;怎么俩long 0.0 可能我文盲了,我去了一个,因为后面涉及小数运算,所以改成float了。
//2.定义:char ch;clrscr(); 后面那个没用,删了。
//3.啊,其实被你坑了,真心的  看各种判断模式!0<b<=500 不能这样写的 必须写成b>0&&b<=500
//  当然了,按照你的程序顺序,依次判定下来,0<b<=500可以写成 b<=500 后面的依次是b<=2000 b<=5000
//  因为前面已经判定过一部分了:例如 :如果进行到0<b<=500这里,那么说明它前面那个b<=0已经不成立,所以b>0是毋庸置疑的
//4.最后那里:

//ch=getchar();
//getchar();

//在ch=getchar();后面再写一个getchar()语句,用来把你输入 y 以后再输入的 回车换行符 存下。这样这个回车换行符不影响程序运行了。

未知令人期待!
2013-12-22 18:38
新手1名
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-11-18
收藏
得分:0 
回复 2楼 神机军师
真的啊怪不得一直没发现哪错了
2013-12-22 18:49
快速回复:为什么只有前面的那两个if语句能用,后面的都是按照第二个if语句进行的 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019898 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved