标题:if else语句如何改造成switch语句
只看楼主
不惑不获
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-3-17
 问题点数:0 回复次数:8 
if else语句如何改造成switch语句
小弟学习遇到一个题目,缠绕我几天了,心急的很,望编程高手指点一下题目:某个服装店经营套装,也单件出售。如果整套买,一次买的多于50套,每套80元,如果一次买的不足50套,每套90元,如果只买上衣,每件60元,如果只买裤子,每条45元。输入需要买的上衣和裤子的件数,计算应付金额。请问如何用switch语句实现同样的功能?
ifelse语句:
#include <stdio.h>

main()
{
int c,t; /*变量c代表买上衣的件数,t代表买裤子的件数*/
int m; /*变量m表示应付金额*/

printf("请输入你需要买的上衣和裤子的件数:\n");
scanf("%d,%d",&c,&t); /*输入你需要买的上衣和裤子的件数*/
if (c==t) /*成套买*/
{
if (c>=50)
m = c*80; /*买50套以上,每套80元*/
else
m = c*90; /*买50套以下,每套90元*/
}
else /*不成套买*/
{
if (c>t) /*买的上衣比裤子多*/
if (t>=50)
m=t*80+(c-t)*60; /*多于50套,成套部分按每套80元算,单件另算*/
else
m=t*90+(c-t)*60; /*少于50套,成套部分按每套90元算,单件另算*/
else /*买的裤子比上衣多*/
if (c>50)
m=c*80+(t-c)*45; /*多于50套,成套部分按每套80元算,单件另算*/
else
m=c*90+(t-c)*45; /*少于50套,成套部分按每套90元算,单件另算*/
}
printf("\n应付金额是: %d\n",m);

}
搜索更多相关主题的帖子: switch else 语句 改造 
2006-03-17 19:23
haishanglang
Rank: 1
等 级:新手上路
帖 子:378
专家分:0
注 册:2006-3-2
得分:0 
因为必须得判断c和 t的大小关系,而switch中case后只能接常量表达式,所以不用if...else..似乎不可能,

2006-03-17 19:42
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
得分:0 
以下是引用haishanglang在2006-3-17 19:42:00的发言:
因为必须得判断c和 t的大小关系,而switch中case后只能接常量表达式,所以不用if...else..似乎不可能,

没听明白,是必需有switch case 语句吗,还是同时用if语句


2006-03-17 19:58
不惑不获
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-3-17
得分:0 

我想也是,如果只用switch绝对不行,我开始的想法是先if(c==t)判定c=t的情况后,再用switch语句选择c>t和c<t时的四种情况,却不知道该如何定义switch(),case后常量是用case80,case90,cas60,case45还是用c/50的值为0或者非0呢?还是其他?真的想了几天了,望各位指点。


2006-03-17 20:12
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
得分:0 
可以用switch语句嵌套

2006-03-17 20:20
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分:0 
以下是引用zhangjuan在2006-3-17 20:20:00的发言:
可以用switch语句嵌套

这个题~以前一个人问过吧~


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-17 22:10
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
得分:0 
SWITCH嵌套,嵌套中调用函数会比较清楚而且不容易乱.
另外赞你一句,虽然程序简单,但代码格式和注释不错,有条有紊.

我的原则很简单:不做不喜欢的事!
2006-03-17 23:02
不惑不获
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-3-17
得分:0 

谢谢各位,我已经明白了,受他人指点,我的程序为:
#include<stdio.h>
main()
{
int c,t; /*变量c代表买上衣的件数,t代表买裤子的件数*/
int m; /*变量m表示应付金额*/
int w; /*总套数*/
printf("请输入要买的上衣和裤子数:\n");
scanf("%d,%d",&c,&t); /*输入你需要买的上衣和裤子的件数*/
w=c>t?t:c; /*判定套装数量*/
t=t>w?t-w:0; /*配套后裤子的剩余件数*/
c=c>w?c-w:0; /*配套后上衣的剩余件数*/
switch(w/10)
{
case 0:
case 1:
case 2:
case 3:
case 4: /*买50套以下,每套90元*/
m=w*90+t*45+c*60; /* 配套的衣服总价格 加上剩余裤子总价格 加上剩余上衣总价格*/
break;
default: /*买50套以上,每套80元*/
m=w*80+t*45+c*60; /* 配套的衣服总价格 加上剩余裤子总价格 加上剩余上衣总价格*/
break;
}
printf("\n应付金额是:%d\n",m);
}


2006-03-18 12:18
不惑不获
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-3-17
得分:0 
我发现自己原来没有跳出课本,程序的变化在于思维的变化,而这也正是想要突破的难度。

2006-03-18 12:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-51093-1-1.html




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

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