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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容