| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4972 人关注过本帖
标题:FizzBuzz问题
取消只看楼主 加入收藏
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
 问题点数:0 回复次数:6 
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
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
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
以下是引用crackerwang在2007-3-8 22:11:26的发言:
小弟我向来不轻易的服输,所以我改了一下,

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


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-08 22:40
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 

回楼上,我也是个新手,而且我是学通信的,现在想从头开始学C,我现在用的函数基本没有脱离过老谭那本书附录的内容,就我目前的学习进度,那些函数就够我消化一阵了,我现在还想学学数据结构,现在还在找资料中呢!


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-08 23:13
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
以下是引用mp3aaa在2007-3-9 2:42:21的发言:
哈哈 我不用IF
#include"stdio.h"
int o=0;
main(){while(o<100)o++,(o%3==0||o%5==0||o%15==0)?printf("fizz %s"+(o%3==0?0:4),"buzz "+(o%5==0?0:4)):printf("%d ",o);}

printf("fizz %s"+(o%3==0?0:4),"buzz "+(o%5==0?0:4))
这里的“+”是什么用法?
printf的格式不就是printf(格式控制,输出表列)么?这里还真是看不懂


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-09 19:29
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
呵呵,这个语法怎么谭浩强那本书没有,今天又长见识了

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



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

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