关于使用c语言编写一个猜随机数字的小游戏


一个猜随机数字的小游戏)

基础知识的普及(提示:有些知识我在代码注释里提及,所以不再正文中书写)

1. 创建和引用新函数

形式

game()        //game是函数名。可以随意换成别的
{

}

前面先把新函数创建完之后,随后再引用(形式如实操),如果先引用后创建代码无法运行
void 函数名()
void的意思是这个函数不需要返回值
反例:int main() ,最后需要 return 0;

2.scanf函数的使用

使用时需要引入头文件<stdio.h>
scanf函数是用于识别键盘上的输入
形式:int a = 0;
//////////scanf(“%d”, &a);
其中a是一个整型变量,scanf若要识别输入,需要取地址,&就是取地址符号
但是对于数组并不需要’&',因为数组本身有地址

3.switch和if循环的应用

switch与if都为选择结构,但是用法并不一致

以下是switch的运用与示例(判断今天是否是工作日)
1.switch后的括号内只能是整型家族(整数和字符)
2.case 后面必须有一个空格,空格之后也只能是整数家族,然后要加上 ‘:’
3.switch之后只能跟一条语句,要想控制更多语句需要{ }
4.default主要是规避一些不符合预期类型的输入
5. default和各个case的顺序并不是固定的,但最好按照逻辑排序
6. case控制的语句之后要加上break,不然代码会一直往下跑
输入1
去掉break的示例输出效果 :工作日工作日工作日工作日工作日休息日休息日

int main()
{
	    int day = 0;
	    scanf("%d", &day);
	switch (a)        //后面不用加 ; ,与if、else一致,后面只能跟一条语句,想要更多就需要{}
	{                 //case后面要加 : ,case 与后面的常量或字符之间一定要有空格, switch、case后面只能跟整型 && 字符
	case 1:           
		printf("工作日");
		break;        //要加break语句,不然代码会一直往下跑
    case 2:
		printf("工作日");
		break;
	case 3:
		printf("工作日");
		break;
	case 4:
		printf("工作日");
		break;
	case 5:
		printf("工作日");
		break;
	case 6:
		printf("休息日");
		break;
	case 7:
		printf("休息日");
		break;
	default:                       //default后面也要加:,这个主要是用于规避一些不符合预期的输入值
		printf("请重新输入");       
		break;
	}
	return 0;
}

同时,以上的代码可以简化

int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (a)
{
 case 1:
 case 2:
 case 3:
 case 4:
 case 5:
 	   printf("工作日");
 	   break ;
 case 6:
 case 7:
 	   printf("休息日");
 	   break ;
}
  return 0;
{

if语句
1.if语句后面只能跟一条语句,要跟多条需要 { },else同理
2.if() , 括号内的语句分真假,真为非零,假为零
反之,若括号内填入非零数字,那这个if语句一定会运算,填入0,则不会运算
switch、while后面的括号内部也是同理

//*******if语句
int main()
{
    int a = 2;
    if (a == 2)               //形式: if(条件),后面不用+;
         printf("对的\n");
    else                      //同理,后面不用+;
        printf("错的");
    return 0;
//}


//*******if的嵌套
int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a >= 18)                //拓展         不等于号: !=
		                         //             小于等于号: <=
	                           //             大于等于号: >=
		                        //等于号: ==(用于判断变量是否等于某个特定的值, =是用于给变量赋值的)
  printf("%s", "可以抽烟");
	else
	{
		if (a <= 6 && a >= 0)       //有两个条件需要同时满足时,在两个条件之间用 && 链接,不可以写成:10 < a < 30
			                                              //原因:该式子从左往右依次运算,当a=8,则 10 < a 结果为0, 0 < 30,最终结果成立
			printf("不可能抽烟");                          //这里提到了一个知识点,0表示假,非0表示真
		else
		{
			if (a < 0)
			printf("请重新认真输入");
			else
			printf("小孩子不能吐烟圈");
		}
	}
	return 0;
}

关于选择结构,还有一种三目操作符(可运用于简单的结构)

//三目操作符形式:     xxx ? yyy : zzz            其中xxx,yyy,zzz为表达式
//其运算规则:         xxx 为真,则输出yyy
//                   xxx为假,则输出zzz
4.循环结构与其多层嵌套

1.while(表达式)

int main()
{
	int n = 0;
	scanf("%d", &n);
	while (n)
	{
		printf("%d ", n % 10);
		n /= 10;                
	}
		return 0;
}
//练习:在屏幕上输出1~10的数
 int main()
{
 int a = 0;
 while ( a<= 10)
 {
 printf("%d", a );
 a++;
 }
 return 0;
 }

2.do while

//*****do while语句
//形式: do              //至少执行一次,后面只能跟一个语句,多条要加{}     
//      语句 ;  
//       while(   );       这个while比较特殊,要加;
//*****加了{}形式
//    do
//     {
//          语句1;     
//          语句2;
//     }while();
// 
//****范例
 int main()
 {
     int i = 0;
     do
    {
         printf("hello c");
         i++; 
    } while( i <= 10);
  return 0;
 }

3.for

//*****2.for语句
//for (表达式1;表达式2;表达式3)
//表达式1:用于循环变量的初始化
//表达式2:用于循环结束的判断
//表达式3:用于循环变量的调整
//整个过程中表达式1只被执行1次,剩下是表达式2和3循环
//for后面只能跟一个语句,多条需要{}

//范例
 int main()
{
    for( i = 3 ;i <= 3 ; i=+3 )
    printf("%d", i)
    return 0;
}

4.补充:1.break也可用于跳出循环
//////////////2.continue用于跳过本次循环,进行下一次
5.多层嵌套
没什么好说的,但要提及的是,多层嵌套需要多个break,在多层嵌套时,想要跳出整个大循环要写很多break语句,这时可以用到goto语句,比较方便
goto范例:

//goto语句
//一般不建议用,但在跳出多层嵌套循环的时候比较好用
int main()
{
	printf("%d", 2);
	goto end;
	printf("%d", 1);
end:
	return 0;
}
5.使用rand函数生成随机数,并利用time函数进行种子更换

1.rand函数
想要使用rand函数需要引入头文件<stdio.h>
用法://1.为变量赋值
int a = rand()
********2.在printf中直接输出
printf(“%d”,rand());
需要注意 rand() 生成随机数需要种子,但其括号中是空的,这时默认种子为1
如果一直使用rand(),那么关闭程序,再输出的随机数与上一次相同
要想实现每次打开程序输出的随机数不一样,需要更换种子
2.time函数
想要使用time函数需要引入头文件<time.h>
time函数是计算1970年与现在时间的差值,以秒来计算,输出的类型为time_t,本质是整型
用法://1.time(NULL)————时间戳
3.更新种子
1.先在()内填入 time(NULL)//////////////////////////////形式:srand(time(NULL))
2.再将数据类型强制转换为unsigned int //////////形式:srand((unsigned int)time(NULL))
*小tips:强制转换数据类型的方式: a = (需要的数据类型) b

实操

void game()         //void,意思是不需要返回值
{
	srand((unsigned int)time(NULL));              //time本质十个整型,将其强制转化为unsigned int也无太大问题
	                                              //time(NULL): 时间戳
	int input_2 = 0;
	int count = 5;
	int varible = rand()%100 +1;	
	while (count > 0)
	{
		scanf("%d", &input_2);             //应该把scanf放在循环里
		if (varible > input_2)
		   {
		     printf("数字小了\n");	 
	       }
		else
		{
			if (varible < input_2)
			{
				printf("数字大了\n");

			}
			else
			  {
				printf("恭喜你猜对了\n");
				break;
			  }
		}
	    count--;
	}
	if (count == 0)
		printf("超出5次机会,请重新开始\n");	
}



int main()
{
	int first_input = 0; //变量的位置要在循环之前                           
	do
	{
		printf("************************\n");
		printf("*****1.start 0.exit*****\n");
		printf("************************\n");
		printf("请在这里输入1或0   \n");
		scanf("%d", &first_input);
		switch (first_input)                          //填需要判断的变量
		{
		case 1:
			printf("开始游戏,请输入一个0~100的整数\n");
			game(); //构造新函数
			break;
		case 0:
			break;
		default:
			printf("请重新输入\n");
			break;
		}
	} while (first_input);            // 0是有说法的,返回值直接取消 
	  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值