Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 2311|回复: 12
打印 上一主题 下一主题

C的Switch Case,能用Operator吗?

[复制链接]

13

主题

0

好友

8388

积分

金鼎名嘴

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

跳转到指定楼层
1#
发表于 2010-6-30 04:23 PM |只看该作者 |倒序浏览
  1. if (time < 12)
  2. {
  3. printf("am")
  4. }
  5. else if (time >= 12)
  6. {
  7. printf("pm")
  8. }
复制代码
可不可以改成Switch Case?
比如说
  1. switch(time)
  2. {
  3. case (< 12):
  4. printf("am");
  5. break;
  6. }
复制代码
case能用oprator吗?
我需要做一个很长的list,如果用If Else的话会很长,有没有其他的方法?




收藏收藏0

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

2#
发表于 2010-6-30 04:37 PM |只看该作者
不可能在 Switch 内有Operator 的。

请问你是要做什么? Swtich Case 除非是 很少, 不然用的话, 会 Switch 死。


回复

使用道具 举报

13

主题

0

好友

8388

积分

金鼎名嘴

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

3#
发表于 2010-6-30 04:43 PM |只看该作者
我要拿来算成绩的
  1. if ((marks > 96)) && (marks <= 100))
  2. {
  3. point = 4.0;
  4. }
  5. else if.....
复制代码
一直到 marks < 60

用if else会写到很长


回复

使用道具 举报

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

4#
发表于 2010-6-30 05:50 PM |只看该作者
算 GPA 吗? 如果是有规则的 (每 5 分扣多少 GPA), 可以想办法用一个公式来算就好了,
不要用 if else 或 switch case.

例如 GPA = Round( marks/25 );


回复

使用道具 举报

13

主题

0

好友

8388

积分

金鼎名嘴

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

5#
发表于 2010-6-30 06:13 PM |只看该作者
嗯,差不多是这样...
就96-100分之间Point是4.0,90-95分之间是3.75,87-89分之间是3.5,以此类推...
算出来的只是Grade Point,接下来还需要用来计算GPA。
因为input的科目不只是一个,所以必须依照input先决定Point是多少才能计算出GPA...


回复

使用道具 举报

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

6#
发表于 2010-6-30 06:45 PM |只看该作者
有规则的吗? 怎么 3.5 是 87-89?
如果是不规则的, 一个方法是, 把 range 里面最低的分数放进一个 array, 然后用另外一个相对应的 array 放 points.

例如:
int[] marks_array = [96, 90, 87, ......]
float[] point_array = [4, 3.75, 3.5, ......]

然后, 用 loop.
  1. while (marks < marks_array[n]) {
  2. n++;
  3. }
  4. point = point_array[n];
复制代码
那就剩去了很多 if else, 也不用 switch case.


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

7#
发表于 2010-6-30 06:59 PM |只看该作者
有规则的吗? 怎么 3.5 是 87-89?
如果是不规则的, 一个方法是, 把 range 里面最低的分数放进一个 array, 然 ...
~Zero 发表于 2010-6-30 06:45 PM


哇, 这个好。 跟你学到了~ 呵呵呵呵。


回复

使用道具 举报

13

主题

0

好友

8388

积分

金鼎名嘴

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

8#
发表于 2010-6-30 07:11 PM |只看该作者
那n是什么?


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

9#
发表于 2010-6-30 07:48 PM |只看该作者
回复 8# ~Kai

n 就是被宣告成了 array 的index(Pointer, Array 的指标)

当 match 到了 array mark 的值后 推出 while , 然后  然后 从 array point 里得到 相同位置的 值。


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

10#
发表于 2010-7-1 04:53 AM |只看该作者
有规则的吗? 怎么 3.5 是 87-89?
如果是不规则的, 一个方法是, 把 range 里面最低的分数放进一个 array, 然 ...
~Zero 发表于 2010-6-30 06:45 PM



既然分数是固定的,points 是不固定的情況下,可以減少 looping, 直接套用计算得出 index 會比較方便


回复

使用道具 举报

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

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-12-1 05:24 PM , Processed in 0.119371 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部