#includestdio.h
10年积累的成都做网站、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有黄浦免费网站建设让你可以放心的选择与我们合作。
#includestdlib.h
#includetime.h
int main(void)
{
int ai[3]; //甲的三个骰子的点数
int bi[3]; //乙的三个骰子的点数
int i;
srand((unsigned)time(NULL)); //播时间种子,产生随机数
for (i = 0; i 3; i++)
{
ai[i] = rand() % 6 + 1; //随机产生1-6的点数
bi[i] = rand() % 6 + 1;
}
printf("甲的点数:");
for (i = 0; i3; i++)
{
printf("%d ", ai[i]);
}
printf("\n乙的点数:");
for (i = 0; i3; i++)
{
printf("%d ", bi[i]);
}
if (ai[0] + ai[1] + ai[2]bi[0] + bi[1] + bi[2])
{
printf("\n\n甲获胜.\n");
}
else{
printf("\n\n乙获胜.\n");
}
return 0;
}
实践1:函数编程练习 1.掷骰子游戏 编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,投两枚骰子之后,计算点数之和。如果第一次投的点数和为7或11,则游戏者获胜;如果第一次投的点数和为2、3或12,则游戏者输;如果第一次投的点数和为4、5、6、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。如果投掷7次仍未赚到该点数,则游戏者输。 【思考题】 将游戏规则改为:计算机想一个数作为一个骰子掷出的点数(在用户输入数据之前不显示该点数),用户从键盘输入一个数作为另一个骰子掷出的点数,再计算两点数之和。其余规则相同,然后请读者重新编写该程序。 2.学生成绩统计(一维数组)要求函数参数中包含一维数组。 从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能: (1)统计不及格人数并打印不及格学生名单; (2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单; (3)以直方图方式统计各分数段的学生人数及所占的百分比。形式如下: 分数段 学生人数 图形 60 3(10%) *** 60-69 8(…) ******** 70-79 7(…) ******* 80-89 8(…) ******** =90 4(…) **** 实践2:结构体编程练习 在屏幕上模拟显示一个数字式时钟 按如下方法定义一个时钟结构体类型: struct clock { int hour; int minute; int second; }; typedef struct clock CLOCK; 然后,将下列用全局变量编写的时钟模拟显示程序改成用CLOCK结构体变量类型重新编写。已知用全局变量编写的时钟模拟显示程序如下: #include stdio.h int hour, minute, second; /*全局变量定义*/ /* 函数功能:时、分、秒时间的更新 函数参数:无 函数返回值:无 */ void Update(void) { second++; if (second == 60) /*若second值为60,表示已过1分钟,则 minute值加1*/ { second = 0; minute++; } if (minute == 60) /*若minute值为60,表示已过1小时,则 hour值加1*/ { minute = 0; hour++; } if (hour == 24) /*若hour值为24,则hour的值从0开始计时*/ { hour = 0; } } /*函数功能:时、分、秒时间的显示 函数参数:无 函数返回值:无 */ void Display(void) /*用回车符'\r'控制时、分、秒显示的位置*/ { printf("%2d:%2d:%2d\r", hour, minute, second); } /*函数功能:模拟延迟1秒的时间 函数参数:无 函数返回值:无 */ void Delay(void) { long t; for (t=0; t50000000; t++) { /*循环体为空语句的循环,起延时作用*/ } } main() { long i; hour = minute = second = 0; /*hour,minute,second赋初值0*/ for (i=0; i100000; i++) /*利用循环结构,控制时钟运行的时间*/ { Update(); /*时钟更新*/ Display(); /*时间显示*/ Delay(); /*模拟延时1秒*/ } }
用随机数来模拟摇骰子
#include stdio.h
#include time.h /*用到了time函数*/
#define LEN 100 /*随机数个数*/
#define MIN 1 /*随机数最小值*/
#define MAX 6 /*随机数最大值*/
int main(void) {
int i,randArr[LEN],count[6]={0};
srand((unsigned) time(NULL)); /*用时间做种,每次产生随机数不一样*/
for (i=0; iLEN; i++) {
randArr[i] = rand() % (MAX-MIN+1) + MIN; /*产生MIN~MAX的随机数*/
count[randArr[i]-1] ++;
}
printf ("摇%d次骰子的点数结果:\n",LEN);
for (i=0; iLEN; i++) {
printf ("%d\t",randArr[i]);
if (i+1 % 5 == 0) /*每输出5个数换一行*/
putchar ('\n');
}
putchar ('\n');
puts ("各点数出现次数统计:");
for (i=0; i6; i++)
printf ("%d点:%d\n",i+1,count[i]);
putchar ('\n');
getch (); /*屏幕暂留*/
return 0;
}
运行结果
#include stdio.h
#include stdlib.h
#include time.h
#define MONEY 200
int get_num(void)
{
srand(clock());
return 1+rand()%6;
}
int win(int me_num,int computer_num,int n,int *me,int *computer)
{
if(me_num-computer_num 0)
{
printf("太厉害了,您这把赢了呢!\n");
printf("您的财富 +%d\n",n*2);
*me+=n*2;
printf("计算机的财富 -%d\n",n);
*computer-=n;
printf("您当前的财富为 %d\n计算机当前的财富为 %d\n",*me,*computer);
if(*computer 0)
{
printf("太厉害了、太厉害了,计算机被你打败了!\n");
return -1;
}
return 0;
}
else if(me_num-computer_num 0)
{
printf("不好,您输了!\n");
printf("您的财富 -%d\n",n);
*me-=n;
printf("计算机的财富 +%d\n",n*2);
*computer+=n*2;
printf("您当前的财富为 %d\n计算机当前财富为 %d\n",*me,*computer);
if(*me 0)
{
printf("我们非常遗憾地通知您,由于您的帐户欠费,我们做了一个艰难的决定,把您赶出赌场,大赌伤身,小赌宜情,回家好好过日子吧!\n您被赶出了赌场!\n");
return -1;
}
return 0;
}
else
{
printf("不分上下,打成平手,让我们再来决战一次吧!\n");
printf("您的财富 +%d\n",n);
*me+=n;
printf("计算机的财富 +%d\n",n);
*computer+=n;
printf("您当前的财富为 %d\n计算机当前财富为 %d\n",*me,*computer);
return 0;
}
}
int main(int argc,char **argv)
{
int computer=MONEY;
int me=MONEY;
int me_n=0,computer_n=0;
int me_num=0,computer_num=0;
int o;
printf("欢迎来到掷骰子游戏!\n现在是人机对战模式,您和计算机现在都拥有%d财富!\n",MONEY);
printf("游戏规则:\n按1键进行下注,不设置则默认按上次下的注计算\n按0键进行掷骰子\n按9键查看帮助\n按2键查看自己的财富\n按3键查看计算机的财富\n按4键退出游戏\n");
while(1)
{
printf("输入操作:");
scanf("%d",o);
switch(o)
{
case 0:
if(me_n == 0)
{
printf("您还没有下注,请先下注!\n");
break;
}
printf("开始掷骰子 . . .\n");
me_num=get_num();
printf("您掷得的骰子为 %d\n",me_num);
printf("计算机开始掷骰子 . . .\n");
computer_num=get_num();
printf("计算机掷得的骰子为 %d\n",computer_num);
if(win(me_num,computer_num,me_n,me,computer) == -1)
goto end;
break;
case 1:
while(1)
{
printf("请输入您的赌金:");
if(scanf("%d",me_n) != 1)
{
printf("输入的赌金出错,请重新输入!\n");
continue;
}
if(me_n me)
{
printf("您的赌金不够,请重新输入!\n");
continue;
}
if(me_n computer)
{
printf("啊哦,计算机的财富没有这么多哦,您太厉害了,请输下一个计算机可承受的注吧!\n");
continue;
}
break;
}
break;
case 2:
printf("您当前的财富为:%d\n",me);
break;
case 3:
printf("计算机当前的财富为: %d\n",computer);
break;
case 4:
goto end;
break;
case 9:
printf("游戏规则:\n按1键进行下注,不设置则默认按上次下的注计算\n按0键进行掷骰子\n按9键查看帮助\n按2键查看自己的财富\n按3键查看计算机的财富\n按4键退出游戏\n");
break;
default:
printf("\n错误的操作,请看帮忙!\n");
}
}
end:
printf("游戏结束!\n");
return 0;
}
#include time.h
#include stdio.h
#include string.h
#define MIDDLE_FLAG 1
#define INITIAL_SCORE 1000
int bet()
{
int rollresult;
rollresult = rand()%6 + 1; //此处rand()为随机数,对6取余结果为0~5,需要+1修正为1~6
//printf("结果:%-4d",rollresult);
if (rollresult MIDDLE_FLAG)
return 1;
else
return 0;
}
int main()
{
int betscore,myscore = INITIAL_SCORE;
int resultflag, betflag, betresult;
char cinput[2], sresult[3];
printf("您的初始分数为%d\n",myscore);
srand((int)time(0)); //用时间创建随机数种子
while(1)
{
while(1)
{
puts("请压分:");
scanf("%d",betscore);
if(betscore myscore)
printf("您的剩余分数不够,为%d", myscore);
else
break;
}
fflush(stdin); //强制刷新缓冲区,防止上次输出影响
puts("请选择大小G为大L为小,X为退出:");
gets(cinput);
cinput[0] = cinput[0]%32+'A' - 1;
if(cinput[0] == 'X')
break;
else
betflag = (cinput[0] == 'G')?1:0;
//三目运算符“?”用法:x=(ab)?a:b;相当于if(ab)x=a;else x=b;
betresult = bet();
myscore = (betresult == betflag)?(myscore+2*betscore):(myscore-betscore);
strcpy(sresult, ((betresult!=0)?"大":"小"));
printf("结果为%s,您当前的分数为%d\n",sresult, myscore);
}
return 0;
}
是“掷骰子”吧?!!这是掷骰子的程序:题目是这样子的:编写一个模拟掷骰子的程序,每个骰子从1-6,所以两个骰子组合数从2-12,随机投掷10000次,打印所有组合出现的概率!
#includeiostream.h
#includetime.h
#includestdlib.h
void
main()
{
int
i=0;
float
a[13]={0};
srand((unsigned)time(null));
int
num1=0,num2=0;
for(i=1;i=10000;i++)
{
num1=rand()%6+1;
num2=rand()%6+1;
a[num1+num2]++;
a[0]++;
}
for(i=2;i=12;i++)
{
couti'
''
';
cout(a[i]/a[0])*100'%';
coutendl;
}
}