|登录 |注册

查看: 2368|回复: 12
打印 上一主题 下一主题

C的Switch Case,能用Operator吗?

[复制链接]
~Kai
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的话会很长,有没有其他的方法?
宅男-兜着走
2010-6-30 04:37 PM
不可能在 Switch 内有Operator 的。

请问你是要做什么? Swtich Case 除非是 很少, 不然用的话, 会 Switch 死。
~Kai
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会写到很长
~Zero
2010-6-30 05:50 PM
算 GPA 吗? 如果是有规则的 (每 5 分扣多少 GPA), 可以想办法用一个公式来算就好了,
不要用 if else 或 switch case.

例如 GPA = Round( marks/25 );
~Kai
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...
~Zero
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.
宅男-兜着走
2010-6-30 06:59 PM
有规则的吗? 怎么 3.5 是 87-89?
如果是不规则的, 一个方法是, 把 range 里面最低的分数放进一个 array, 然 ...
~Zero 发表于 2010-6-30 06:45 PM


哇, 这个好。 跟你学到了~ 呵呵呵呵。
~Kai
2010-6-30 07:11 PM
那n是什么?
宅男-兜着走
2010-6-30 07:48 PM
回复 8# ~Kai

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

当 match 到了 array mark 的值后 推出 while , 然后  然后 从 array point 里得到 相同位置的 值。
Super-Tomato
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, 2025-3-11 03:47 AM , Processed in 0.107984 second(s), 26 queries .

Powered by Discuz! X2.5 © 2001-2012 Comsenz Inc.

本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved

Dedicated Server powered by iCore Technology Sdn. Bhd.

合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部