1

上周有我的“用 C 编程”的期中考试,最后一个问题是编写一个程序来打印从 1 到 100 的数字列表,但每 3 的倍数打印 fizz,5 的倍数,以及 3 和 5 的倍数打印 fizzbuzz . 刚拿到我的成绩,我得到了 76%,而且我确信我答对了所有其他问题,所以我的代码中一定有错误。我想弄清楚(不记得我在纸上写了什么)我的问题是我基本上可以正常工作,但它也在打印数字,数字应该被单词替换。这是我到目前为止的代码。

#include <stdio.h>

int main (void)
{
        int x,y;
        printf("this should count from 1 to 100, and instead of printing the multiples of 3 or 5 or 3 and 5 it should print words\n");
        for (x=1; x<=100; x++)
        {
                if (x%3==0)
                {
                    printf("fizz\n");
                }
                if (x%5==0)
                {
                    printf("buzz\n");
                }
                if (x%3==0 && x%5==0)
                {
                    printf("FizzBuzz\n");
                }
        printf("%d\n",x);
        }
return 0;
}

我实际上并没有“重新参加”考试或类似的事情,所以我不想作弊,我只是对我需要在这里做什么感到困惑。我得到的输出是

1
2
fizz
3
4
buzz
5
fizz
6
7
8
fizz
9
buzz
10
11
fizz
12
13
14
fizz
buzz
FizzBuzz
15
16

它应该看起来像这样:

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
4

8 回答 8

8

你的条件是错误的。他们应该是:

if (x%3==0 && x%5==0)
{
    printf("FizzBuzz\n");
}
else if (x%3==0)
{
    printf("fizz\n");
}
else if (x%5==0)
{
    printf("buzz\n");
}
else
{
    printf("%d\n",x);
}

请记住,FizzBuzz 如果两者都可以被 35整除,并且Fizz该数字是否可以被 3 整除,并且Buzz该数字是否可以被 5 整除。

于 2013-10-24T05:02:19.377 回答
1
 for (x=1; x<=100; x++)
    {
            if (x%3==0 && x%5==0)
            {
            printf("fizzbuzz\n");
            }
            else if (x%5==0)
            {
             printf("buzz\n");
             }
             else if (x%3==0)
             {
              printf("Fizz\n");
              }
              else {
              printf("%d\n",x);
              }
    }
于 2013-10-24T05:00:44.580 回答
1

你非常接近,所以我会尽量给你一个小提示。似乎方向只希望您printf每次循环迭代做一个。您可以在语句中添加什么关键字if来实现这一点?您还需要在之前放置某种关键字,printf("%d\n",x);以防止它每次都执行。

另外,请对每个if块使用相同的缩进。

于 2013-10-24T05:02:22.560 回答
1
#include <stdio.h>
int main()
{
int x;

for ( x = 1; x <= 100; x++ )
{
   if (x%3==0)
   {
      printf("fizz");
   }
   if (x%5==0)
   {
      printf("buzz");
   }
   if(x%3 && x%5)
   {
      printf("%d",x);
   }
   printf("\n");           
}
}

会给你你正在寻找的东西。请注意,“fizzbuzz”输出是使用前两个 if 条件建立的。

于 2013-10-24T05:34:31.570 回答
0
            if (x%3==0 && x%5==0)
            {
                 printf("FizzBuzz\n");
            }
            else if (x%3==0)
            {
            printf("fizz\n");
            }
            else if (x%5==0)
            {
                 printf("buzz\n");
            }
            else
                 printf("%d\n",x);

这将提供正确的输出,因为在您的情况下,在某些情况下,许多条件都可以实现,在我的 15 、 5 和 3 的值上干运行,您的代码都将理解

于 2013-10-24T05:03:22.863 回答
0

尝试这个:

#include <stdio.h>

int main (void)
{
    int x,y;
    printf("this should count from 1 to 100, and instead of printing the multiples of 3 or 5 or 3 and 5 it should print words\n");
    for (x=1; x<=100; x++)
    {
          if (x%3==0 && x%5==0)
            {
                printf("FizzBuzz\n");
            }
           else  if (x%3==0)
            {
                printf("fizz\n");
            }
           else if (x%5==0)
            {
                printf("buzz\n");
            }
       else      
    printf("%d\n",x);
    }
  }
于 2018-11-28T02:04:40.013 回答
-1

如何打印数字列表,用 3,5 和 3 和 5 C 的倍数替换数字?

{
  for (int i = 0; i < 100; i++) {

    if (i % 3 == 0 && i % 5 == 0) {
      System.out.println("fizzbuzz" + ", ");
    } else if (i % 3 == 0) {
      System.out.println("fizz" + ",");
    } else if (i % 5 == 0) {
      System.out.println("buzz" + ", ");
    } else {
      System.out.println(i + ",");
    }
  }
于 2021-11-17T05:53:37.493 回答
-1
#include <stdio.h>

int main ( void ) {

// Initialize variable to count from 1 - 100.
  int counter;

/* Create a for loop to count from from 1 to no more than 100 and count by an iteration no more than #1. */
   for(counter = 1; counter <= 100; counter++)
   {

    if (!(counter % 3) && (!(counter % 5)))
            {
               printf("fizzBuzz\n");
            }

           else  if (!(counter % 7 ))
            {
               printf("Fizz\n");
            }
            else  if (!(counter % 5 ))
            {
               printf("Buzz\n");
            }

            /* By placing "printf("%d\n", counter);" in curly brackets "{ }" within the else statement you are able to override the numbers in the previous statements with the desired text you wish to input.*/
            else
            {
               printf("%d\n", counter);
            }
   }

return (0);
}

/* ps 看在上帝的份上,请不要使用 'i' 或 'j' 之类的变量。这是一种糟糕的编程,因为它使您的代码更难阅读和理解。*/

于 2019-08-01T13:45:04.613 回答