C语言实战开发第七节课

猜数字游戏
游戏开始,产生
四个 - 数组
1-9之间的 - 随机数
不重复的,- for
从小到大排序的 - for - 冒泡 快速 选择 插入排序
数字
2 3 4 8

如果猜测的数字正确并且位置正确A
如果猜测的数字正确但位置不正确B
请输入猜测数字:
1 2 3 4
0A1B

2 3 4 5
1A1B 5

2 5 7 8
2A1B

2 5 8 9
4A0B

include <stdio.h>

include <stdlib.h>

include <time.h>

int main(int argc, const char * argv[]) {
int org[4] = {};//保存随机数
int input[4] = {};//保存用户输入
int aCount = 0;
int bCount = 0;

//播种子
srand(time(NULL));
//产生随机数
for(int i = 0; i < 4; i++){
    int temp = rand()%9 + 1;
    
    if (i == 0) {
        //第一次 直接保存
        org[i] = temp;
    } else{
        //判断是否重复
        //i正好和当前已有个数对应
        int j = 0;
        for(; j < i; j++){
            if (temp == org[j]) {
                //重复了
                break;
            }
        }
        
        //判断for循环怎么出来的额
        if (i == j) {
            //不重复 保存
            org[i] = temp;
        }else{
            //重复了
            i--;
        }
    }
}

//排序 冒泡 选择 插入
//冒泡排序
for (int i = 0; i < 4-1; i++){
    for(int j = 0; j < 4 - i-1; j++){
        if (org[j] > org[j+1]) {
            int temp = org[j];
            org[j] = org[j+1];
            org[j+1] = temp;
        }
    }
}

// for(int i = 0; i < 4; i++){
// printf("%d ", org[i]);
// }

//开始游戏
while(1){
    //提示输入
    printf("请输入猜测的数字:");
    for (int i = 0; i < 4; i++) {
        scanf("%d", &input[i]);
    }
    
    //开始
    //1 5 8 9
    //1 2 3 5
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            if (org[i] == input[j]) {
                //数字存在 判断位置
                if (i == j){
                    aCount++;
                }else{
                    bCount++;
                }
            }
        }
    }
    
    //提示用户结果
    printf("%dA%dB\n", aCount, bCount);
    
    //判断是否正确
    if( aCount == 4){
        printf("全对!!!!\n");
        break;
    }else{
        aCount = 0;
        bCount = 0;
    }
}
return 0;

}

除此之外 让我们用函数做做试试
9:48:06

include <stdio.h>

/*
函数的使用
函数就是代码块 { } == 独立空间
一个功能对应一个函数
1.init
2.isExists;
3.bubleSort;
4.play
5.userInput

返回 函数名(type param1,type param2){
代码块
return ;
}
void int float char
驼峰命名法 add download parse
scaleImageToSize
int add(int a, int b){
}
形式参数:这个代码块的局部变量

定义函数的两种方式

  1. 声明和实现一起
  2. 先声明 后实现
    */

//2. 先声明 后实现
int minus(int a, int b);
int add(int a, int b);
void test(void);

int main(int argc, const char * argv[]) {
//函数的使用
//通过调用函数的函数名();
add(1, 2);
int result = add(3, 3);
return 0;
}

//1. 声明和实现一起
int add(int a, int b){
int sum = a + b;
return sum;
}

int minus(int a, int b){
return a - b;
}

9:48:06

include <stdio.h>

include <stdlib.h>

include <time.h>

include <stdbool.h>

/*
产生一个随机数
返回值:int
函数名: generateNumber
参数:min max
*/
int generateNumber(int min, int max);
//产生4个随机数 保存到数组中
void initArray(int array[], int count);
//判断数组中是否包含一个数字
bool isNumberExist(int array[], int temp,int num);
//输出数组
void show(int array[],int num);

int main(int argc, const char * argv[]) {
int org[4] = {};

initArray(org, 4);
show(org,4);

return 0;

}

int generateNumber(int min, int max){
srand(time(NULL));
return rand()%(max-min+1) + min;
}

void initArray(int array[], int count){
for (int i = 0; i < count; i++) {
//获取随机数
int temp = generateNumber(1, 9);
//判断当前数组里面是否存在
bool result = isNumberExist(array, temp,4);
if (result == true) {
i--;
}else{
array[i] = temp;
}
}
}

bool isNumberExist(int array[], int temp,int num){
for (int i = 0; i < num; i++) {
if (array[i] == temp) {
return true;
}
}

return false;

}

void show(int array[],int num){
for (int i = 0; i < num; i++) {
printf("%d ", array[i]);
}
printf("\n");
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容