android 数组6,Android Day6

Android Day6

内容:

Ⅰ随机数的使用方法,并利用随机数编写猜数字游戏

Ⅱ利用C语言数组编写数字游戏

Ⅲ冒泡法、选择法、插入法排序

实践

Ⅰ随机数

1.随机数的用法

(1)rand()函数是产生随机数的一个随机函数,rand()返回值为一随机数值

(2)在调用此函数前,必须先利用srand()设好随机数种子。如果未设随机数种子,rand()在调用时会自动设随机数种子为1。

(3)srand函数是随机数发生器的初始化函数

(4)rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。

(5)rand()和srand()要一起使用,其中srand()用来初始化随机数种子,rand()用来产生随机数。因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以为使每次得到的随机数不一样,用函数srand()初始化随机数种子。srand()的参数,用time函数值(即当前时间),因为两次调用rand()函数的时间通常是不同的,这样就可以保证随机性了。

2.随机数的具体使用:猜数字游戏

随机产生4个不相同的数字 从小到大排序

1 2 3 4

玩家开始输入

1 4 5 6

如果位置正确且数字正确用A输出

如果数字正确位置不正确用B输出

先进行数组和变量的全局定义

int orgArray[4] = {};

int guessArray[4] = {};

int countA = 0;

int countB = 0;

利用srand函数产生随机数

srand((unsigned int)time(NULL));

int randomNum = 0;

while (1) {

for (int i = 0; i < 4; i++)

{

bool isExist = false;

randomNum = rand() % 10;

for (int j = 0; j < i; j++) {

if (orgArray[i] == randomNum) {

//当新产生的数在原数组中是否出现,若出现则跳出,同时给isExist变量赋值为true

isExist = true;

break;

}

}

//没有出现时

if (isExist == false) {

break;

}

开始排序

int j = 0;

for (; j < i; j++) {

//当新产生的数小于数组中的数时

if (randomNum < orgArray[j]) {

for (int k = i; k > j; k--) {

orgArray[k] = orgArray[k - 1];

}

break;

}

}//保存到数组里面去

orgArray[j] = randomNum;

}

//开始游戏

while (1) {

printf("请输入猜测的数字:");

for (int i = 0 ; i < 4 ; i++) {

scanf_s("%d", &guessArray[i]);

}

//判断输入

for (int i = 0; i < 4; i++) {

//控制原始数字,用原始数字依次和输入的4个数字比较

for (int j = 0; j < 4; j++) {

//控制输入

if (orgArray[i] == guessArray[j]) {

//判断两个的位置是否相同

if (i == j) {

//数字相同位置也相同时

countA++;

}

else {

//数字相同位置不同s时

countB++;

}

}

}

}

if (countA == 4) {

//全部正确时

printf("Congratulation!!!");

break;

}

else {

printf("%dA%dB\n", countA, countB);

//还原数据

countA = 0;

countB = 0;

}

}

}

Ⅱ数字游戏

终端输入参与的人数:7

1 2 3 4 5 6 7

大家围成一圈

请输入死亡编号:3

凡是报道3的人都死亡 后面的人继续数数

输出最后一个活着的人的编号

int total = 0;

int number[10] = {};

int killNumber = 0;

int count = 0;

int totalKilledNumber = 0;

printf("请输入参与人数:");

scanf_s("%d", &total);

给数组赋值 编号

for (int i = 0; i < total; i++) {

number[i] = i + 1;

}

printf("请输入死亡号码:");

scanf_s("%d", &killNumber);

开始游戏

for (int i = 0; i < total; i++) {

//判断这个人有没有被杀掉

if (number[i] != KILLED) {

//报数

count = count + 1;

}

判断当前编号是不是死亡号码

if (count == killNumber) {

//杀掉人

number[i] = KILLED;

还原编号

count = 0;

死亡人数+1

totalKilledNumber++;

//是否结束

if (totalKilledNumber == total - 1) {

break;

}

}

判断这一次循环是不是完成

if (i == total - 1) {

//让i回到起始点

//防止++ 导致回到第二个

i = -1;

}

}

printf("\n");

//测试一次的结果

for (int i = 0; i < total; i++) {

printf("%d ", number[i]);

}

Ⅲ冒泡法、选择法、插入法排序

冒泡排序 通过一次排序 最大的沉底

int num[] = {3,0,1,8,7,2,5,4,6,9};

for (int i = 0; i < 10; i++){//比较的次数

for (int j = 0; j < 10-i-1; j++){

if (num[j] > num[j+1]) {

//交换j和j+1的值

int temp = num[j+1];

num[j+1] = num[j];

num[j] = temp;

}

}

}

选择排序

一次取出一个值 默认他是最小的

如果发现比这个数小 就交换

遍历整个数组 找到一个最小的

int num[] = {3,0,1,8,7,2,5,4,6,9};

for (int i = 0; i < 10-1; i++){

//默认这是最小的

//int min = num[i];//3

for (int j = i+1; j < 10; j++){

//控制用min和后面的每一个进行比较

if (num[i] > num[j]){

//j对应的数字比min还小 交换

int temp = num[i];

num[i] = num[j];

num[j] = temp;

}

}

//一次遍历之后找到最小的值min

//num[i] = min;

}

插入排序

int num[] = {3,0,1,8,7,2,5,4,6,9};

for (int i = 0; i < 10; i++) {

//让i和i+1比较大小

if (num[i] > num[i+1]) {

//交换值

int temp = num[i];

num[i] = num[i+1];

num[i+1] = temp;

//让num[i]和前面的所有进行比较

for (int j = i; j > 0; j--){

if (num[j] < num[j-1]) {

temp = num[j];

num[j] = num[j-1];

num[j-1] = temp;

}

}

}

}

for (int i = 0; i < 10; i++) {

printf("%d ", num[i]);

}

printf("\n");

感想

今天应该是我写的最难的一次了,昨天思考了一下,没有头绪就没有再写,现在明白了当时应该多思考思考,哪怕写不出来,第二天听讲的时候肯定也会更加轻松,虽然听完觉得恍然大悟,但是过一会自己再写,却拿起笔又放下,无从下笔,所以还是希望自己能在推敲这里多下点功夫,不能遇到一点难题就不继续了

peace

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值