| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 420 人关注过本帖
标题:自己编的程序 看看问题出在哪里
只看楼主 加入收藏
不负年华
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-6-28
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:4 
自己编的程序 看看问题出在哪里
#include "stdio.h"
void main()
{float money ,profit;
    scanf("%ld\n",&profit);
    if(profit<=1000){ money= 500;   printf("%d,%d\n",profit,money);}
    else if(profit>1000 && profit<=2000){ money=500+profit*10%; printf("%d,%d\n",profit,money);}
    else if(profit>2000 && profit<=5000) {money=500+profit*15%;printf("%d,%d\n",profit,money);}
     else if(profit>5000 && profit<=10000) {money=500+profit*20%;printf("%d,%d\n",profit,money);}
     else  if(profit>10000){money=500+profit*25%;printf("%d,%d\n",profit,money);}
}
   
2010-07-28 14:32
ggyy4k
Rank: 5Rank: 5
等 级:职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
收藏
得分:6 
回复 楼主 不负年华
楼主的意思我想应该是不输出小数点,改了下,应该符合要求
#include "stdio.h"
void main()
{float money=0,profit=0;
    scanf("%f",&profit);
    if(profit<=1000)
        {
            money= 500;
            printf("%1.0f,%1.0f\n",profit,money);
        }
    else if(profit>1000 && profit<=2000)
        {
            money=500+profit*0.1;
            printf("%1.0f,%1.0f\n",profit,money);
        }
    else if(profit>2000 && profit<=5000)
        {
            money=500+profit*0.15;
            printf("%1.0f,%1.0f\n",profit,money);
        }
     else if(profit>5000 && profit<=10000)
        {
            money=500+profit*0.20;
            printf("%1.0f,%1.0f\n",profit,money);
        }
     else  if(profit>10000)
        {
            money=500+profit*0.25;
            printf("%1.0f,%1.0f\n",profit,money);
        }
     getch();
}
另外附整型与浮点型的基础知识
(1) 存放:
整型数据是转换成相应的补码后直接存放在内存中,而实型与整型的存放不同,它是以指数形式存放,即符号位+小数部分+指数部分.比如:12345在内在中的存放形式是这样的:第一位符号位是’+’,接下来存放的是小数,即0.12345,最后是指数5,而小数部分和指数部分所占的位数因编译系统的不同而不同,不必深究,
(2) 转换:
所有可以转换的数据类型之间的转换都遵循一个规则:按存储单元的存储形式直接传送,从低位开始.比如:将十进制数-123转换为八进制数: 将其补码原样传送由于八进制数无符号(十六进制数也一样),所以最高位的1在八进制数的内在单元中已不代表符号,而代表数值进行运算.不同的编译器和机器所得的结果不一定相同,因为整型变量所占的字节数不同,现以十六位机(另外还与编译器有关,假如整型占两个字节)为例:-123的补码为1111111110000101,将其换算成八进制数为177605,而在32位机上(假如整形占4个字节),其结果就是37777777605.
实型转换成整型时,得到的绝不是你想要的结果,因为实型的存储形式是按指数形式存储的,低位中存储的是指数部分,当传送的时候,只是将指数部分或指数部分加上小数部分的小部分传送给整型变量,得到的结果不可能是你想要的结果.

[ 本帖最后由 ggyy4k 于 2010-7-28 15:48 编辑 ]
2010-07-28 15:33
laazyt
Rank: 2
等 级:论坛游民
帖 子:25
专家分:19
注 册:2010-7-17
收藏
得分:6 
楼主的money和profit都是float类型的,输入输出要用到%f,貌似就这点出错了
2010-07-28 15:35
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
收藏
得分:6 
二楼,顶

只是,else是多余的
因为条件能对应每一种情况
而且不会重复

也可保留else
将.....&&删掉

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-07-28 15:59
ggyy4k
Rank: 5Rank: 5
等 级:职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
收藏
得分:0 
回复 4楼 encounter
4楼观察很仔细,是我没注意,的确可以将&&去掉,这样程序将精简很多
2010-07-28 16:13
快速回复:自己编的程序 看看问题出在哪里
数据加载中...
 
   



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

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