利用数组,循环结构,选择结构编写两个小游戏,排序

目的:
1.熟悉和更深层掌握循环结构
2.学习功能设计然后进而通过代码实现
3.多练习从而熟能生巧
技术:
for语句while语句if语句的高频使用
死亡编号小游戏代码如下:

#include "stdafx.h"
#include"iostream"
#define KILLED -1
int _tmain(int argc, _TCHAR* argv[])
{
    int total=0;int killNumber=0;int number[10];int count=0;int totalkilledNumber=0;
    //提示输入游戏人数
    printf("请输入游戏人数:");
    scanf("%d",&total);
    //给数组赋值 编号
    for(int i=0;i<total;i++)
    {
        number[i]=i+1;
    }
    //提示输入死亡编号
    printf("请输入死亡编号:");
    scanf("%",&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=i-1;
            //防止++导致回到第二个

            }
    
        printf("\n");
        //测试一次之后的结果
        for(int i=0;i<total;i++)
        {
         printf("%d",number[i]);
        }
    }
system("pause");
return 0;
}

使用宏定义巧妙利用数组和循环结构实现对号码进行筛选,输出等功能
猜数字小游戏代码如下:

#include "stdafx.h"
#include"iostream"
#include <stdlib.h>
#include <time.h>


int _tmain(int argc, _TCHAR* argv[])
{

     //保存原始数字
    int originalArray[4] = {};
    //保存猜测的数字
    int guessArray[4] = {};
    //记录数字和位置都相同的个数
    int countA = 0;
    //记录数字相同但位置不相同的个数
    int countB = 0;
    
    srand((unsigned int)time(NULL));
    for (int i = 0; i < 4; i++) {
        bool isExist = false;
        int temp = 0;
        while(1){
            //产生一个随机数
            temp = rand() % 10;
            
            //判断是否已经存在
            for (int j = 0; j < i; j++) {
                if (originalArray[j] == temp) {
                    //重复了 停止比较 继续产生新的
                    isExist = true;
                    break;
                }
            }
            
            //1.重复了 break
            //2.比完了 j==i 结束了 没有重复
            if (isExist == false) {
                //找到不重复的数字了
                break;
            }
        }
        
        //插入排序
        //寻找这个数字对应的位置
        int j = 0;
        for (; j < i; j++){
            //j对应的数字和产生的数字进行比较
            if(temp < originalArray[j]){
                //j后面的内容往后移动 腾出空间
                for(int k = i; k > j; k--){
                    originalArray[k] = originalArray[k-1];
                }
                break;
            }
        }
        
        //保存到数组里面去
        originalArray[j] = temp;
    }
    
    //输出
//    for (int i = 0; i < 4; i++) {
//        printf("%d ", originalArray[i]);
//    }
//    printf("\n");
    
    //1 2 5 6
    //1 2 7 8
    //开始游戏
    while (1) {
        printf("请输入猜测的数字:");
        for (int i = 0; i < 4; i++){
            scanf("%d", &guessArray[i]);
        }
        
        //判断用户的输入
        for (int i = 0; i < 4; i++) {//控制原始数字
             //用原始数字依次和输入的4个数字比较
            for (int j = 0; j < 4; j++) {//控制输入
                if (originalArray[i] == guessArray[j]) {
                    //判断两个的位置是否相同
                    if (i == j) {
                        //数字相同 位置也相同
                        countA++;
                    } else{
                        //数字相同 位置不同
                        countB++;
                    }
                }
            }
        }
        
        if (countA == 4) {
            //全对
            printf("Congratulation!!!");
            break;
        }else{
            printf("%dA%dB\n", countA, countB);
            
            //还原数据
            countA = 0;
            countB = 0;
        }
        
    }



    system("pause");
    return 0;
}

先产生随机数然后对随机数进行判断,判断是否重复,
然后对随机数进行排序,要求小数在前大数在后,
最后在终端输入猜的数字,最后编写提示
感悟:
这两个小游戏如果在我独立完成的情况下是不能实现的,感觉自己对于代码实现功能这一步很生疏,
虽然大体结构有了,但是到了具体实现的细节不能很好的处理好。对于老师写的代码,和逻辑思维能
跟的上,但是在某些不熟悉的地方会卡住。用i,j,k控制循环次数和循环嵌套不熟悉,觉得还是需要多练习。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。转载请注明出处。原文:https://www.ji...
    程序员联盟阅读 8,441评论 20 48
  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 5,080评论 0 10
  • Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行...
    穷人家的孩纸阅读 4,048评论 1 1
  • 之前老师说这东西自己做出来会高兴的睡不着。没想这个不眠之夜这么快就来了,经过了一天半的努力,已略有小成,程序已经能...
    李_昀凇阅读 1,405评论 1 0
  • 2018年12月21日 星期五 亲子日记(479)王婷爸爸 应同事之邀,我去参加他儿子的喜宴。婚礼现场气氛热烈,大...
    朋友是老酒阅读 10,912评论 60 221

友情链接更多精彩内容