目录
1.前言
由于第三讲 "单数的猜数游戏" 不是很完善,只是介绍了 if 和 while的基本用法,结合之前所讲的知识点综合引用一下,编程只是一个工具,目的是为了要解决问题
---------------------------------------------------------------------------------------------------------------------------------
2.(猜数游戏)2.0
1.要求
随机生成4四位数非重复的值,依次输入,正确返回T(true),错误返回F(felse),例如"TTFT" 第三位有错,直到输入正确 返回"TTTT",程序结束。
2.思路
继要求之后 要拆分问题
提示:
程序为什么要做循环呢?
在用户没有办法一次性就可以输入正确,要想办法在某一部插入循环
假设有一个F(错误),就要重新输入,应当在输入用户值前些一个循环
直到完全输入正确break; 停止循环
程序为什么要做判断呢?
因为要判断随机值 和 用户输入的值
1.如何生成不重复四位数的随机数?
在程序最前行 声明#include <stdlib.h> 和 #include <time.h> 结合使用
引用库函数 srand((int)time(NULL)); 生成整型类型的随机数
但是每声明一次 srand函数会返回一个很大的值
因为还没有讲述到数组 ,这里选择声明 四个变量,四个变量分别获取随机数去个位数(对原来的变量做%10,取余数)例如: 10595 % 10 = 5 //可以看成 10595 % 10 =(的余数)
然后按照要求判断是否重复 去做 if 判断
2.获取用户输入的值
声明四个变量 ,引用scanf() 赋值到变量,,
3.做随机数和输入值的判断
做四次(因为要反复去写的代码块 可以写成函数设计的形式)然后返回 T;F。
3.流程
程序说明 -> 生成随机数 -> 循环 -> 取值 -判断 -> 输出结果
我们要想为了main函数(主函数)思路清晰,尽可能的使用函数设计
-----------------------------------------------------------------------------------------------------
程序说明 函数名:begin 无返回值
生成随机数 函数名:num_four 要在main声明变量
做循环 因为不知道要循环多少次,要使用while 或do..while(至少做一次循环)
取值 引用 scanf() (自带的库函数)
判断 函数名:judge() 要判断 第一个随机值和第一个输入值,依次往后
输出结果 引用 printf() (自带的库函数)
3.代码实现过程
/**
* program: 随机4位数 猜数游戏2.0
*
* 思路:
* 程序说明 -> 生成随机数 -> 循环 -> 取值 -判断 -> 输出结果
*
* 新知识点 如何生成随机数
* 在程序最前行 声明#include <stdlib.h
* 引用库函数 srand((int)time(NULL)); 生成整型类型的随机数
*
* 根据思路流程做函数设计
*/
#include <stdio.h> //引用 输入 输入函数
#include <stdlib.h> //引用srand() 生成随机值函数
#include <time.h> //与上面结合使用
void begin(void)
{
printf("**********Guessing game:***********\n");
printf("\tGuess four number\n");
printf("\tT is true, F is Felse\n");
printf("***********************************\n");
return;
}
//经过 %10 运算 返回一个 个位数的值
int num_four(int x)
{
x = rand() % 10; //生成了一个 个位数的值
return x; //结果在返回到main函数中的实参上
}
//比较同位的随机值和用户输入值 并返回结果
void judge(int a, int b)
{
if (a == b)
{
printf("T ");
}
else
printf("F ");
return;
}
int main(void)
{
//程序说明
begin();
//生成随机数
srand((int)time(NULL)); //生成随机数种子 若是生成随机数用rand()
int a = 0;
int b = 0;
int c = 0;
int d = 0;
//获取随机值
do
{
num_four(a);
num_four(b);
num_four(c);
num_four(d);
//如果 在不相等的情况下
if(a!=b && a!=c && a!=d && b!=c && b!=d && c!= d);
break;
}while (1);
//在赋值前要声明变量
int x, y, n, m; //分别为用户输入的四个值
//循环 赋值开始判断
//解释 输入0000 退出
printf("Enter 0000 to exit\n");
do
{
printf("input:");
//赋值 ->用户值
scanf("%d", &x);
if (0000 == x)
{
break;
}
//四位数 拆开 赋值给用户值变量
y = x / 100 % 10;
n = x / 10 % 10;
m = x % 10;
x = x / 1000 % 10;
//输入的值
printf("entered value:%d %d %d %d\n", x, y, n, m);
//返回结果
printf("return result:");
//比较用户值 与 随机值 同时输出结果
judge(a,x);
judge(b,y);
judge(c,n);
judge(d,m);
printf("\n");
if(a==x && b==y && c==n && d==m)
{
//输入正确 然后结束
printf("Great and quit\n");
break;
}
} while (1);
printf("Program is over\n");
getchar();
return 0;
}
4.结束
重点看代码块中的注释 和思路 //复制后可以直接运行
重点:随机取值 和 拆分变量 并赋值
下一讲 整型转字符串(数组的基本用法)
有问题可以直接私信 ,You should elevate yourself. Of course, and me.