实践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秒*/ } }
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、做网站、门源网络推广、重庆小程序开发、门源网络营销、门源企业策划、门源品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供门源建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
#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;
}
#includestdio.h
#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;
}
掷骰子比大小,用随机数就可以,但是庄家的规则是咋样的没交代清楚(这里假定庄家的优势在于点数一样大时,庄家赢):
#include "stdafx.h"
#include iostream
#include time.h
using namespace std;
int main()
{
int Me, Computer,n=1,MC=1;
int meWin = 0, nGames = 0;
srand((unsigned int)time(NULL));
while (n)
{
cout "开始掷骰子(输入1开始,输入0结束):" endl;
cin n;
Me = rand() % 6 + 1;
Computer= rand() % 6 + 1;
nGames++;
if (MC)
{
cout "你做庄:" endl;
cout "你的点数:" Me " 电脑的点数:" Computer endl;
if (Me = Computer)
{
meWin++;
cout "恭喜你赢了!" endl;
}
else
{
MC = 0;
cout "哦,你输了!" endl;
}
}
else
{
cout "电脑做庄:" endl;
cout "你的点数:" Me " 电脑的点数:" Computer endl;
if (Computer = Me)
cout "哦,你输了!" endl;
else
{
meWin++;
MC = 1;
cout "恭喜你赢了!" endl;
}
}
}
cout "你赢的次数:" meWin " 输的次数:" nGames - meWin " 胜率:";
float p = (float)meWin / nGames;
int q = p * 100;
printf("%2d%% \n", q);
system("pause");
return 0;
}