-3

ここで質問です。誰かが答えを理解できますか?

最大 2 つの「if」テストが許可されます。

Given numbers from 1 to 100
If this number is divisble by 21 print "foobar"
If this number is divisble by 7 print "bar"
If this number is divisble by 3 print "foo"
If none of the above, print the number

1 つの番号のみを印刷する必要があります。たとえば、番号 21 は、すべての "foobar"、"bar"、"foo" ではなく、"foobar" のみを出力する必要があります。

どの言語でもできます。

どうもありがとう。

4

9 に答える 9

6

秘訣は、あなたの質問の 4 つの if を理解すると、真ん中の 2 に基づいて上と下の if を推測できることです。

for(int i=1;i<=100;i++)
{
    string numberstr = i.ToString();
    if(i % 3 == 0)
    {
        Console.Write("foo");
        numberstr = "";
    }
    if(i % 7 == 0)
    {
        Console.Write("bar");
        numberstr = "";
    }
    Console.WriteLine(numberstr);

}
于 2012-03-01T12:17:04.573 に答える
2

linq を使用している場合はゼロ (ただし、条件演算子を使用して実際に不正行為を行っています)。

using System;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var lines = from i in Enumerable.Range(1, 100)
                        let foopart = i % 3 == 0 ? "foo" : ""
                        let barpart = i % 7 == 0 ? "bar" : ""
                        let numberpart = i % 3 != 0 && i % 7 != 0 ? i.ToString() : ""
                        select foopart + barpart + numberpart;

            foreach (var line in lines)
                Console.WriteLine();
        }
    }
}
于 2012-03-01T12:25:43.243 に答える
2

おい、フィズバズ。

#include <iostream>

int main(){
  for(int i=1; i <= 100; ++i){
    bool foo = !(i % 3), bar = !(i % 7);
    bool num = !(foo || bar);
    foo && std::cout << "foo";
    bar && std::cout << "bar";
    num && std::cout << i;
    std::cout << "\n";
  }
}

Ideone での実例。

于 2012-03-01T12:19:27.800 に答える
1

私はゼロ ifステートメントでこれを行うことができます:

array[1..100] = {"1", "2", "foo", "4", "5", "6", "bar", ... "bar", "foo", "100"}
for i = 1 to 100:
    print array[i]

...少し埋めて実際の言語に変換するのはあなたに任せます。私は自分でやりますが、そのようなタスクの有用性は疑問です:-)

または、おそらくさらに良い:

print "1\n2\nfoo\n4\n...97\nbar\nfoo\n100"
于 2012-03-01T12:16:10.903 に答える
1

もちろん、条件は 3 つありますが、IF はありません :) C#

var list = Enumerable.Range(1, 100).Select(n =>
            n % 21 == 0 ? "foobar" :
            n % 7 == 0 ? "bar" :
            n % 3 == 0 ? "foo" : n.ToString());
foreach(var n in list)
{
    Console.WriteLine(n);
}
于 2012-03-01T13:11:10.917 に答える
1

C のコード

char* x = "\n"; 
int i;
for(i=1;i<=75;i++)
{   
    int y = ((i%5 == 0) && printf("%s","Foo")); 
    y=y+((i%7 == 0) && printf("%s","Bar"));
    ((!y==1) && printf("%d",i));
    printf("%s",x);
}
于 2014-05-06T04:58:11.913 に答える
0

結果を文字列に保存します。

例:

文字列 str = number.toString();

if(number % 7 == 0) {
   str = "FOO";
}

if(number % 5 == 0) {
   str = i % 7 == 0 ? str + "BAR" : "BAR";
}

return str;
于 2014-04-09T18:07:21.723 に答える
-1
pseudcode:
if (num/3)
{
    print foo
}
elseif (num/7)
{
    print bar
}
else
{
        print num
}

基本的に foobar は、21 で割り切れる数に遭遇すると連結されます。

于 2012-03-01T12:27:29.647 に答える
-1
for (int i = 100; i > 0; i--) {
        int mul3  = (i /3)*3;
        int mul7 = (i /7) * 7;
        String fooOrBar = (mul3 == i && mul7 == i) ? "foobar" :(mul3 == i) ? "foo" : (mul7 == i) ? "bar" : "";
        System.out.println(fooOrBar);

    }
于 2016-01-16T10:07:50.673 に答える