代码展示:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
//石头0,剪刀1,布2的游戏
int u_select=0;
int p_select=0;
int p=0,u=0; //设置俩个变量作为用户或电脑胜利的判定
printf("请用户输入0.石头,1.剪刀,2.布三者中其一:\n");
//先赢三场者胜利
while(p<3&&u<3)
{
scanf("%d",&u_select); //通过键盘让用户进行输入
srand(time(NULL)); //随机函数rand();使用srand()进行随机播种
p_select=rand()%3; //对随机函数给出的数值取余得到0,1,2,的随机数
switch(p_select)
{
case 0:
{
if(0==u_select)
{
printf("平局\n");
}
else if(1==u_select)
{
printf("电脑赢一局\n");
p++;
}
else if(2==u_select)
{
printf("用户赢一局\n");
u++;
}
break;
}
case 1:
{
if(1==u_select)
{
printf("平局\n");
}
else if(2==u_select)
{
printf("电脑赢一局\n");
p++;
}
else if(0==u_select)
{
printf("用户赢一局\n");
u++;
}
break;
}
case 2:
{ if(2==u_select)
{
printf("平局\n");
}
else if(0==u_select)
{
printf("电脑赢一局\n");
p++;
}
else if(1==u_select)
{
printf("用户赢一局\n");
u++;
}
break;
}
}
if(p==3)
{
printf("电脑胜%d盘,用户胜%d盘,电脑胜利\n",p,u);
}
else if(u==3)
{
printf("用户胜%d盘,电脑胜%d盘,用户胜利\n",u,p);
}
}
return 0;
}
C语言知识:
以上代码我使用了俩个不常见的头文件。
<stdlib.h>头文件 是一个包含通用函数、内存管理函数和变量转换函数的库。它提供了许多用于执行标准任务的函数,例如动态内存分配、随机数生成和字符串到数值的转换。
<time.h>头文件是一个包含了日期和时间相关函数的重要库,它定义了用于处理时间和日期的变量类型,宏以及函数。
函数原型:
1. 函数原型和用法
原型说明:rand()函数的原型为`int rand(void)`,它不接受任何参数,返回一个范围在0到RAND_MAX之间的伪随机数,是一个正态分布函数。
使用方式:rand()函数通常与srand()函数配合使用,后者用于设置rand()函数的种子,从而改变rand()函数生成的随机数序列。如果不设置种子,rand()函数每次程序运行时都会生成相同的随机数序列,这通常不是我们想要的结果。通过设置不同的种子,可以得到不同的随机数序列。
时间作为种子:常用的设置种子的方法是使用当前时间作为种子srand((unsigned)time(NULL))`。这样可以确保每次程序运行时都能得到不同的随机数序列。为了使它输出的值变为三个随机值,我使用%运算符%3取余使随机数变为0,1,2这三个数。
在上述代码中我使用了while循环,if-else.switch分支结构。
这些都是C语言中的基础结构但却是c语言的重要组成部分,通过基础结构的架构和嵌套使用就可以完成许多复杂的C语言程序的编写,正确和高效地使用C语言的基础结构对任何一个程序员来说都是一项基本技能。
while(循环条件){ 条件为真进入循环,一但条件为假退出循环
循环体;
更新循环变量;(防止成为死循环)
}
在这里我使用了while循环,但还有do-while循环感兴趣的同学可以去使用它。
if-else:
if(判断条件1){
语句块1;
}
else if(判断条件2){
语句块2;
}
.......
else{ //以上判断条件之外的情况,但else后不加(判断条件)
语句块n;
}
switch多分支选择结构:
switch(表达式)/表达式类型:int char 枚举等{
case 常量1:
语句块1;break; //break用于跳出switch语句,防止继续执行下一个case语句
case 常量2:
语句块2;break;
......
default: //无匹配的case语句则执行default语句
语句块n;break;
}