C语言经典数学题:桌椅价格 C/C-Like

ZESHEN 2019-04-06 17:53:45 265

问题:已知一张桌子的价钱是一张椅子的10倍,又知一张桌子比一张椅子贵288元,那么一张桌子和一张椅子分别是多少元?

<-------------------------------------------------->

以下是C语言实现代码:

#include<stdio.h>
<-------------------------------------------------->
//这个方法用于计算所得结果,这里所有的值都采取float进行储存,这可以得到更准确的效果
/*读者可以尝试将float切换成int,这样我们会发现结果并不是320和32,而是319和31,这样的条件_
*_满足了相差288的需求但却并不是相差10倍,这是因为计算机是采用二进制进行计算的,采用int保_
*_存计算结果包含小数的值会造成精度丢失,这就是采用float的原因。
*/
<-------------------------------------------------->
void price_Operate(float MULTIPLE,float MULTIPLY){
<-------------------------------------------------->
//因为差值是288,将初值设为288既可以避免多写一条判断是否大于288的if语句_
//_也可以让while少循环288次,因为我们需要的结果总是大于等于0的
//也许你会告诉我CPU如此强大,288次循环不算什么,但速度永远是C程序员的骄傲
//我有朋友喜欢把大量数据写入循环,他们认为这是必要的,而这种情况多288次往往是很糟糕的 
<-------------------------------------------------->
float price_Table = 288.0;
 while (1){    
 price_Table++;    
 if (price_Table / MULTIPLE == price_Table - MULTIPLY){   
 break;  
 }
 }
<-------------------------------------------------->
//我的C编译器是强制我格式化输出字符的,这样可以保证输出结果的可靠性
//%.1f代表float的值精确到小数点后一位,当然直接输出会发现多个0后边有一个不符合数学的数值_
//_那是因为计算机用二进制进行计算,在数值转换时会有偏差,当然我们可以用精确位数的方式来避_
//_免用户看到这些,当然这不是语言的BUG,不过这确实让很多开发者很头疼(精度问题)
<-------------------------------------------------->
 printf("The price of table is:%.1f\n",price_Table); 
 printf("The price of chair is:%.1f\n",price_Table / MULTIPLE);
}
void main(void){
<-------------------------------------------------->
 //这两个常量分别保存了两者之间的倍数和差值
<-------------------------------------------------->
 const float MULTIPLE = 10.0; const float MULTIPLY = 288.0;
<-------------------------------------------------->
//调用计算的函数
<-------------------------------------------------->
 price_Operate(MULTIPLE,MULTIPLY);
}
<-------------------------------------------------->
//我在附件提供了已完成的C语言代码,读者可以拿去直接编译


上传的附件:
  • TEST.c (大小:478B,下载次数:1)
签名:更多新的知识在那些追求者的信仰下闪耀着光!
最新回复 (0)
    • 代码信条-CodeCreed
      2
        立即登录 立即注册 QQ登录
返回
首页
开发
源码
运维
我的