JBTALKS.CC

标题: C的Switch Case,能用Operator吗? [打印本页]

作者: ~Kai    时间: 2010-6-30 04:23 PM
标题: C的Switch Case,能用Operator吗?
  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 會比較方便
作者: ~Zero    时间: 2010-7-1 09:33 AM
haha tomato 又鬼遮眼了吗?
分数是不规则的, 96, 90, 就 87 了 (奇怪作末不是 85).
points 才是规则的, 所以不能简单就套到 formula 计算 index.
作者: Super-Tomato    时间: 2010-7-1 11:33 AM
haha tomato 又鬼遮眼了吗?
分数是不规则的, 96, 90, 就 87 了 (奇怪作末不是 85).
points 才是规则的, 所 ...
~Zero 发表于 2010-7-1 09:33 AM



=_= 果然我又看錯了,看来是時候好好休息一段日子了
作者: 小恶魔J@YL()NG    时间: 2010-7-3 08:05 PM
lol。。
加油~




欢迎光临 JBTALKS.CC (https://mobile.jbtalks.cc/) Powered by Discuz! X2.5