1

我有一段如下所示的 ada 代码,它是一个简单的 switch case 语句。有没有更好的方法将其转换为 C。

         for I in 1..100 loop
           case I is
                when 100 =>
                    Dollars := Dollars + 1;
                when 25|50|75 =>
                    Quarters := Quarters + 1;
                when 10|20|30|40|60|70|80|90 =>
                    Dimes := Dimes + 1;
                when 5|15|35|45|55|65|85|95 =>
                    Nickles := Nickles + 1;
                when others =>
                    Pennies := Pennies + 1;
           end case;
         end loop;

现在通过为 case 中的每个值添加 switch 和 case,我可以进行转换,但似乎 tyo 使代码太大。还有其他简单而紧凑的方法。如果问题不是,请回复我清除?

4

3 回答 3

4

尝试:

for(i=1;i<=100;i++) {
    if(i == 100) {
        dollars++;
    }else if(i % 25 == 0) {
        quarters ++;
    }else if(i % 10 == 0) {
        dimes ++;
    }else if(i % 5 == 0) {
        nickles ++;
    }else{
        pennies ++;
    }
}
于 2010-04-23T11:05:20.923 回答
3
case 100:
    ++Dollars;
    break;
case 25: case 50: case 75:
    ++Quarters;
    break;
case 10: case 20: case 30: case 40: case 60: case 70: case 80: case 90:
    ++Dimes;
    break;
// ...

不那么漂亮,但仍然有效。如果性能非常重要,您需要将其效率与@unicornaddict 的答案进行比较,这比我的更干净。

于 2010-04-23T11:07:27.790 回答
2
for (i = 1; i <= 100; i++)
{

    if (i == 100)
    {
        Dollars++;
    }
    else if (i % 25 == 0)
    {
        Quarters++;
    }
    else if (i % 10 == 0)
    {
        Dimes++;
    }
    else if (i % 5 == 0)
    {
        Nickles++;
    }
    else
    {
        Pennies++;
    }
}
于 2010-04-23T11:11:03.650 回答