| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4988 人关注过本帖
标题:FizzBuzz问题
只看楼主 加入收藏
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
 问题点数:0 回复次数:21 
FizzBuzz问题
“FizzBuzz 问题”。 FizzBuzz问题是一种英国学校学生经常玩的游戏。
举个“FizzBuzz 问题”的例子:
写一个程序打印1到100这些数字。但是遇到数字为3的倍数的时候,打印“Fizz”
替代数字,5的倍数用“Buzz”代替,既是3的倍数又是5的倍数打印“FizzBuzz”。

下面是我自己写的程序,希望大家进来一起讨论下怎样写的更好些!
#include "stdio.h"
main()
{
int i;
for(i=1;i<=100;i++)
{
if( (i%3==0) && (i%5==0) ) /*FizzBuzz*/
printf("%10s","FizzBuzz");
else if(i%3==0) /*Fizz*/
printf("%10s","Fizz");
else if(i%5==0) /*Buzz*/
printf("%10s","Buzz");
else /*其他数字*/
printf("%10d",i);
if(i%5==0) /*每5个就换行*/
printf("\n");
}
return(0);
}

下面是一个老外说的话:
众所周知,会编程和不会编程的人的区别一眼就能看出来。FizzBuzz是一个非常简单而又有效的方式,去筛掉那些不会编程的人。在面试程序员的时候,我认为一定要先看他们的代码。在我们招聘的时候,我们需要看先面试者的代码,然后才进行电话面试。程序考试一般都是相当基础的考题,很多时候都是基础应用。
搜索更多相关主题的帖子: FizzBuzz 
2007-03-06 23:18
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
#include<stdio.h>
void main()
{
int i;
for(i=1;i<101;i++)
{
printf(" ");
if(i%3==0)
printf("fizz");
if(i%5==0)
{
printf("buzz\n");
continue;
}
if(i%3!=0)printf("%d",i);
}
}
有点意思,应该 有很多的写法

2007-03-07 10:07
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
#include "stdio.h"
main()
{
int i;
for(i=1;i<=100;i++)
{
if(i%15==0) /*FizzBuzz*/
printf("%s ","FizzBuzz");
if(i%3==0) /*Fizz*/
printf("%s ","Fizz");
if(i%5==0) /*Buzz*/
printf("%s ","Buzz");
if(!(i%3==0||i%5==0||i%15==0))
printf("%d ",i);
}
puts("");
return(0);
}

谁有强殖装甲第二部,可以Q我460054868
2007-03-07 18:22
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
我只用两个if就搞定了,相信没有比我再简单的了,哈哈
#include<stdio.h>
void main()
{
int i;
for(i=1;i<101;i++)
{
printf("%d",i);
if(i%3==0)
printf("\bfizz ");/*fizz*/
if(i%5==0)
printf("\bbuzz\n");/*buzz or fizzbuzz*/
printf(" ");
}
}

2007-03-08 12:22
高达
Rank: 1
等 级:新手上路
威 望:1
帖 子:261
专家分:0
注 册:2006-10-27
收藏
得分:0 
我想用switch
但是
写起来 有点杂乱

哎 时间....................
2007-03-08 13:36
无玩过界
Rank: 1
等 级:新手上路
威 望:2
帖 子:246
专家分:0
注 册:2007-2-20
收藏
得分:0 
各人理解题意不同吧

2007-03-08 16:06
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
以下是引用crackerwang在2007-3-7 10:07:54的发言:
#include<stdio.h>
void main()
{
int i;
for(i=1;i<101;i++)
{
printf(" ");
if(i%3==0)
printf("fizz");
if(i%5==0)
{
printf("buzz\n");
continue;
}
if(i%3!=0)printf("%d",i);
}
}
有点意思,应该 有很多的写法

2楼的程序写的很巧妙啊,特别是对fizzbuzz的处理,开始我还以为你漏了那个条件呢


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-08 21:42
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
以下是引用crackerwang在2007-3-8 12:22:05的发言:
我只用两个if就搞定了,相信没有比我再简单的了,哈哈
#include<stdio.h>
void main()
{
int i;
for(i=1;i<101;i++)
{
printf("%d",i);
if(i%3==0)
printf("\bfizz ");/*fizz*/
if(i%5==0)
printf("\bbuzz\n");/*buzz or fizzbuzz*/
printf(" ");
}
}

你这样用倒退一个字符的方法也很巧妙,不过你也逃不掉用3个if的命运,当为2位数的时候,你只退了一个格就有错了
if(i>9);
printf("\b\b");
如果要求范围到1000,你还得加if


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-08 21:46
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
小弟我向来不轻易的服输,所以我改了一下,
#include<stdio.h>
void main()
{
int i,j;
for(i=1;i<1001;i++)
{
printf("%d%n",i,&j);
if(i%3==0)
{
while(j)
{
printf("\b");
j--;
}
printf("fizz");/*fizz*/
}
if(i%5==0)
{
while(j)
{
printf("\b");
j--;
}
printf("buzz\n");/*buzz or fizzbuzz*/
}
printf(" ");
}
}
这样因该没有什么问题了,但是要是实际中要搞的这么复杂就有点那个,
这里大家只是娱乐一下,还是两个if

2007-03-08 22:11
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
以下是引用crackerwang在2007-3-8 22:11:26的发言:
小弟我向来不轻易的服输,所以我改了一下,

哈哈,这样的性格,和我很像,希望以后能多多指教!


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-08 22:40
快速回复:FizzBuzz问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.056627 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved