鱼C论坛

 找回密码
 立即注册
查看: 4675|回复: 14

语义错误啦啦

[复制链接]
发表于 2013-8-21 12:39:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
谁能给讲解一下这个代码语义错误的原因
#include<stdio.h>
#define RATE1 0.12589
#define RATE2 0.17901
#define RATE3 0.20971
#define BREAK1 360
#define BREAK2 680
#define BASE1 (RATE1 * BREAK1)
#define BASE2 (BASE1+(BREAK2-BREAK1)*RATE2)
int main()
{
double kwh;
double bill;
printf("Please enter the kwh you used.\n");
while(scanf("%lf",&kwh)==1)
{
if(kwh<=BREAK1)
bill=RATE1*kwh;
else if(kwh<=BREAK2)
bill=BASE1+(BREAK2-kwh)*RATE2;
else
bill=BASE2+(kwh-BREAK2)*RATE3;
printf("The charge for %.lf kwh is $%1.2f.\n",kwh,bill);
}
return 0;
} 错误.jpg 当输入580的时候,结果应该是84.70,才对

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-21 12:53:16 | 显示全部楼层
你能不能加上注释啊 这么多宏定义 又没有按格式发 看着很累啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 13:03:01 | 显示全部楼层

我刚才试了试,就直接问你一个问题吧,是不是一个语句,比方说bill=BASE1+(BREAK2-kwh)*RATE2的括号分两次打的就运行有错呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-21 13:08:22 | 显示全部楼层
诸葛暗 发表于 2013-8-21 13:03
我刚才试了试,就直接问你一个问题吧,是不是一个语句,比方说bill=BASE1+(BREAK2-kwh)*RATE2的括号分两次 ...

当然不会啊  你先打一个 等到明年再来补上另一个都没问题啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 13:16:03 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-21 13:08
当然不会啊  你先打一个 等到明年再来补上另一个都没问题啊

那我打上注释给你看看吧,看着一样的语句#include<stdio.h>
#define RATE1 0.12589
#define RATE2 0.17901
#define RATE3 0.20971
#define BREAK1 360
#define BREAK2 680
#define BASE1 RATE1 * BREAK1
#define BASE2 BASE1+RATE2*(BREAK2-BREAK1)
int main()
{
double kwh;
double bill;
printf("Please enter the kwh you used.\n");
while(scanf("%lf",&kwh)==1)
{
if(kwh<=BREAK1)
bill=RATE1*kwh;
else if(kwh<=BREAK2)
bill=BASE1+RATE2*(kwh-BREAK1);
else
bill=BASE2+RATE3*(kwh-BREAK2);
printf("The charge for %.lf kwh is $%1.2f.\n",kwh,bill);
printf("Enter the kwh you used.(q to stop)\n");
}
return 0;
}
这个就行,我就纳了闷了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 13:20:07 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-21 13:08
当然不会啊  你先打一个 等到明年再来补上另一个都没问题啊

注释#include<stdio.h>
#define RATE1 0.12589//第一个360kwh的费率
#define RATE2 0.17901//下一个320kwh的费率
#define RATE3 0.20971//超过680kwh的费率
#define BREAK1 360//费率的第一个分界点
#define BREAK2 680//费率的第二个分界点
#define BASE1 (RATE1 * BREAK1)//用电360kwh的费用
#define BASE2 (BASE1+(BREAK2-BREAK1)*RATE2)//用电680kwh的费用
int main()
{
double kwh;//用电的千瓦小时
double bill;//费用
printf("Please enter the kwh you used.\n");
while(scanf("%lf",&kwh)==1)
{
if(kwh<=BREAK1)
bill=RATE1*kwh;
else if(kwh<=BREAK2)
bill=BASE1+(BREAK2-kwh)*RATE2;//用电在360kwh和680kwh之间时
else
bill=BASE2+(kwh-BREAK2)*RATE3;//用电超出680kwh时
printf("The charge for %.lf kwh is $%1.2f.\n",kwh,bill);
}
return 0;
}
另外,把那个我刚发 的正确的代码第19个语句替换这个错误代码的19语句就可以....
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 13:58:37 | 显示全部楼层
有人能解释下吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-21 14:01:58 | 显示全部楼层
O(∩_∩)O~你犯了个小错误
  1. #include<stdio.h>
  2. #define RATE1 0.12589
  3. #define RATE2 0.17901
  4. #define RATE3 0.20971
  5. #define BREAK1 360//45.3204
  6. #define BREAK2 680
  7. #define BASE1 (RATE1 * BREAK1)
  8. #define BASE2 (BASE1+(BREAK2-BREAK1)*RATE2)
  9. int main()
  10. {
  11.         double kwh;
  12.         double bill;
  13.         printf("Please enter the kwh you used.\n");
  14.         while(scanf("%lf",&kwh)==1)
  15.         {
  16.                 if(kwh<=BREAK1)
  17.                         bill=RATE1*kwh;
  18.                 else if(kwh<=BREAK2)
  19.                 //bill=BASE1+(BREAK2-kwh)*RATE2;
  20.               bill=BASE1+(kwh-BREAK1)*RATE2;
  21.                 else
  22.                         bill=BASE2+(kwh-BREAK2)*RATE3;
  23.                 printf("The charge for %.lf kwh is $%1.2f.\n",kwh,bill);
  24.         }
  25.         return 0;

  26. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 14:56:54 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-21 14:01
O(∩_∩)O~你犯了个小错误

好吧,我减反了...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-21 14:57:38 | 显示全部楼层
诸葛暗 发表于 2013-8-21 14:56
好吧,我减反了...

O(∩_∩)O~下次自己 调试下 吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 15:02:54 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-21 14:57
O(∩_∩)O~下次自己 调试下 吧

甲鱼老师调试C的视频我没有找到,还不会调试额
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-21 15:05:46 | 显示全部楼层
诸葛暗 发表于 2013-8-21 15:02
甲鱼老师调试C的视频我没有找到,还不会调试额

(⊙o⊙)…我我的意思是你自己待数字跟着你的代码走把你自己当成计算机
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 15:06:28 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-21 15:05
(⊙o⊙)…我我的意思是你自己待数字跟着你的代码走把你自己当成计算机

这样真的可以吗...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-21 15:07:17 | 显示全部楼层
诸葛暗 发表于 2013-8-21 15:06
这样真的可以吗...

这样可以找出很多错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 15:11:47 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-21 15:07
这样可以找出很多错误

以后努力,每次都是麻烦你帮忙
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-5 11:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表