鱼C论坛

 找回密码
 立即注册
查看: 4267|回复: 10

想用if else语句实现如下功能,不通过switch语句能否实现 谢谢

[复制链接]
发表于 2013-7-23 00:55:45 | 显示全部楼层 |阅读模式
1鱼币
想用if else语句实现如下功能,不通过switch语句能否实现?   
题目是输入 单价P、重量W、距离S。 折扣d的计算根据距离来算,即距离小于250时,没有折扣。距离250<=s<500时候d折扣是2%,距离500 <= s < 1000时候d折扣是5%。运费公式f = p * w * s * (1-d)  。  我用if else语句这么编写但是结果不对,麻烦各位大侠指正,帮小弟解疑。感激不尽。。。

#include <stdio.h>


void main()


{
   double p,w,s,d,f,mid;
   printf("please input 单价重量和距离\n");
   scanf("%lf%lf%lf",&p,&w,&s);
   d = mid;
   f = p * w * s * (1-d/100.0);
   if ( s < 250 )
   {
   mid = 100;
   }
   else if( 250 <= s && s < 500 )
   {
   mid = 2;
   }
   else if( 500 <= s && s < 1000 )
   {
   mid = 5;
   }
   printf("运费是%lf\n",f);
}

最佳答案

查看完整内容

#include void main() { double p,w,s,d,f; printf("please input 单价,重量和距离\n"); scanf("%lf%lf%lf",&p,&w,&s); if ( s < 250 ) { d = 0; f = p * w * s * ((100-d)/100); } else if( 250
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-23 00:55:46 | 显示全部楼层
#include <stdio.h>

void main()
{
double p,w,s,d,f;
   printf("please input 单价,重量和距离\n");
   scanf("%lf%lf%lf",&p,&w,&s);
   if ( s < 250 )
   {
   d = 0;
   f = p * w * s * ((100-d)/100);
   }
   else if( 250 <= s && s < 500 )
   {
   d = 2;
   f = p * w * s * ((100-d)/100);
   }
   else if( 500 <= s && s < 1000 )
   {
   d = 5;
   f = p * w * s * ((100-d)/100);
   }
   printf("运费是%lf\n",f);

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

使用道具 举报

发表于 2013-7-23 01:09:51 | 显示全部楼层
少的时候你这种可以实现,当有十个的时候?100个的时候呢?switch你感觉呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-23 06:54:10 | 显示全部楼层
mid没有初值也可以吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-23 06:58:52 | 显示全部楼层
大哥估计是每个里面都要输出下吧
{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-23 08:54:11 | 显示全部楼层
可以是可以 但 干吗要用 switch 呢 ?? 写控制台程序我还是喜欢if switch 我一般是 用在写 windows 可视化程序时 来看用户点击了哪个按钮的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-7-23 12:29:57 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-23 16:18:18 | 显示全部楼层
软行天下 发表于 2013-7-23 12:29
谢谢,正解。
顺便再问下,我那个程序加了 mid后为什么实现不了呢?   
非常感谢~

The variable 'mid' is being used without being initialized.变量mid没有初始化,你可以先令它为0.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-23 18:26:38 | 显示全部楼层
5楼正解!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-23 22:20:32 | 显示全部楼层

真是被感动的痛哭流涕……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-24 06:28:29 | 显示全部楼层
软行天下 发表于 2013-7-23 12:29
谢谢,正解。
顺便再问下,我那个程序加了 mid后为什么实现不了呢?   
非常感谢~

mid的值都没有,应该不能赋值给d吧,没试过你的程序,不太清楚。你的程序逻辑上有点问题的,主要是当s<250的时候mid应该是0才对吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-18 16:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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