不到20行代码的猜数字游戏,大家评评
程序代码:
#include <iostream>
#include <ctime>
const char *subter_ = "少了!", *hyper_ = " 高了!", *right = "恭喜你猜对了!";
const char* get_diff(int input, int random){
return (input > random) ? hyper_ : ((input < random) ? subter_ : right);
}
int judge(int input, int random){
return puts(get_diff(input, random)),(input == random) ? 1 : 0;
}
int main(void){
srand((unsigned)time(0));
long random = rand() % 1000 + 1, init_money = 0, input = 0, degree = 11;
while(degree--)
(scanf("%d", &input),(!judge(input, random)))? judge(input, random),printf("你还有%d次机会\n", degree) : 1;
return 0;
}
[[it] 本帖最后由 蓝一 于 2008-6-3 22:35 编辑 [/it]]
----------------解决方案--------------------------------------------------------
无语
[color=white]
----------------解决方案--------------------------------------------------------
貌似三目运算可以减少代码行
但可读性非常差
我再来一个
程序代码:
//趣味猜数字
/*
函数设计:
long set_random(); //产生随机数字
int judger(); //以用户输入为参数判断是否猜中
char* get_diff(); //获得和正确数字的差距, 并给出提示信息
long money(); //统计玩家获得的金钱
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TRUE 1
#define FALSE 0
char *subter = "少了!";
char *hyper = " 高了!";
char *right = "恭喜你猜对了!";
/*
函数名:long set_random();
参数:无
返回值: 产生的随机数字
函数功能:产生随机数字并返回
*/
long set_random()
{
srand(time(0));
long random = rand() % 100000;
return random;
}
/*
函数名:char* get_diff(int);
参数:用户输入,正确数字
返回值:提示信息
功能:判断和正确数字之间的差距,并返回提示信息
*/
char* get_diff(int input, int random)
{
int diff = input - random;
return (diff > random) ? hyper : ((input < random) ? subter : right);
}
/*
函数名: int judeg(int, int);
参数:用户输入的数字,随机数字
返回值:TREU 或 FALSE
功能:判断玩家是否猜对,如果对返回TRUE,否则返回FALSE
*/
int judge(int input, int random)
{
return (input == random) ? TRUE :(puts(get_diff(input, random)), FALSE);
}
/*
函数名: long money(int);
参数:初始金钱,玩家是否猜中
返回值:玩家当前钱数
功能:积累玩家资金
*/
long money(int init_money, int flag_win_fal)
{
return flag_win_fal ? init_money += 10000 : init_money;
}
int main(void)
{
int random = set_random();
int init_money = 0;
int input = 0;
do
{
scanf("%d", &input);
if (!judge(input, random))
judge(input, random);
else
printf("获得金钱%ld\n\n", money(init_money, judge(input, random)));
}while(1);
return 0;
}
----------------解决方案--------------------------------------------------------
回复3#
出现问题!!!!
----------------解决方案--------------------------------------------------------
楼上,你换C++编译吧
[color=white]
----------------解决方案--------------------------------------------------------