快速控制流计数倍数

时间:2018-10-20 01:59:58

标签: swift

写一个函数,打印从1到100的数字。但是对于三个数字的倍数打印“ x”而不是数字,对于五个数字的倍数打印“ y”。对于三个和五个的倍数的数字,请打印“ z”。

我是作为一个学生提出这个问题的,在尝试弄清楚如何将倍数从数字转换为相应的单词时遇到了麻烦。在这种意义上,我将其放置为“ x,y和z”。

我可以使函数计数到100,只是不确定如何首先确定倍数。之后,将它们转换为单词而不是数字。这就是我到目前为止所拥有的。

func count(from:Int,to:Int = 100){for i in from ... to {print(i)}}

谢谢您的任何帮助!如果您还可以解释其工作方式的原因,将不胜感激!还在学习!

2 个答案:

答案 0 :(得分:0)

欢迎来到SO。 这是“嘶嘶声”的一种变体。

您可以为此使用map()函数。您将每个数字映射到一个字符串:非“特殊”的数字将映射到其等效的字符串,而“特殊”的数字将映射到其替换。使用switch语句是选择“特殊”数字的好方法。

或者,您可以使用for循环和多部分if语句:

for number in 1...100 {
   //if statements
}

您可以使用模(%)运算符来判断一个数字是否可被另一个数字整除:(如果一个数字可被3整除,则number % 3 ==是正确的。

这不是代码编写服务。看看是否可以解决。

答案 1 :(得分:-1)

请务必先阅读以下内容: https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html

如果只需要打印结果:

for i in 1...100 {
    if i % 3 == 0 && i % 5 == 0 {
        print("z")
    } else if i % 3 == 0 {
        print("x")
    } else if i % 5 == 0 {
        print("y")
    } else {
        print("\(i)")
    }
}

或相同的解决方案,但带有开关:

for i in 1...100 {
    switch (i % 3 == 0, i % 5 == 0) {
    case (true, true): print("z")
    case (true, _): print("x")
    case (_, true):  print("y")
    default: print("\(i)")
    }
}