#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
#include<time.h>
#include<string.h>
//有序数组查找具体的数
//折半查找 (二分查找)
//int main()
//{
// int arr[10] = { 1,2,3,4,5,6,7,8,9,10};
// int k = 7;
// int sz = sizeof(arr) / sizeof(arr[0]);//10个数
// int left = 0;
// int right = sz - 1; //10个数最右边的数是sz-1=9
//
// while(left<=right) //条件
// { ///循环体 一次查不到,就折半第二次
// int mid = (left + right) / 2; //指针的定位
// //避免数字过大写法 溢出
// int mid = left + ((right - left) / 2);
//
// if (arr[mid] < k)
// {
// left = mid + 1;
// }
// else if (arr[mid] > k)
// {
// right = mid - 1;
// }
// else
// {
// printf("找到了,下标是%d\n",mid);
// break;
// }
// }
// if (left > right)
// {
// printf("找不到\n");
// }
// return 0;
//}
//strlen 与sizeof求 数组大小的区别
//int right = strlen(arr2) - 1; //int right =sizeof(arr1)/sizeof(arr1[0])-2;
//例子
//char buf[]="abc";
//[a b c \0]
//这里strlen只会计算 \0 之前的个数,sizeof则是会算入 \0 4个 定位到c的下标是2,所以要减2
//打印两头向中间逐字显示
//#include<stdlib.h>
//int main()
//{
// char arr1[] = "welcome to bite!!!!";
// char arr2[] = "###################";
//
// int left = 0;
// int right = strlen(arr2)-1;//int right =sizeof(arr1)/sizeof(arr1[0])-2;
//
// while (left <= right)
// {
// arr2[left] = arr1[left];
// arr2[right] = arr1[right];
// printf("%s\n", arr2);
//
//
// Sleep(1000); //#打印速度对应的头文件include<windows.h>
//
// //清空屏幕 使他只在一行上打印
// system("cls"); //sysytem是一个库函数,可以执行系统命令
//
// left++;
// right--;
//
// }
// printf("%s\n", arr2);
// return 0;
// }
//
//输入3次登录效果
//if (strcmp(password, "abcdef") == 0) // 比较2个字符串是否相等,不能使用 == ,而应该使用一个库函数:strcmp
//strcmp函数 返回值是0,表示两个字符串相等
//#include<string.h>
//int main()
//{
//
// int i = 0;
// char password[20] = { 0 };
// for (i = 0; i < 3; i++)
// {
// printf("请输入密码:>");
// scanf("%s", password);///不需要加个 & ,数组本身是地址
// if (strcmp(password, "abcdef") == 0) // 比较2个字符串是否相等,不能使用 == ,而应该使用一个库函数:strcmp
// {
// printf("登录成功\n");
// break;
// }
// else
// {
// printf("密码错误\n");
// }
// }
// if (i == 3)
// {
// printf("三次都错误,登录失败\n");
// }
//
// return 0;
//}
//猜数字游戏 电脑随机生成(1-100)
//猜大了
//猜小了
//void meun()
//{
// printf("*************************\n");
// printf("******** 1.play *******\n");
// printf("******** 0.exit *******\n");
//}
//
rand的范围 0--rand_max(32767)
//
//void game()
//{
// int guess = 0;
// //1.生成随机数
// int ret=rand()%100+1;///rand 函数是生成随机数的函数
// //加个 %模100,余数嘛,余数范围就变成了就是0-99 加个1 1-100
// /*printf("%d\n", ret);*/
//
// //2.猜数字
// while (1)
// {
// printf("请猜数字:>");
// scanf("%d", &guess);
// if (guess < ret)
// {
// printf("猜小了\n");
// }
// else if (guess > ret)
// {
// printf("猜大了\n");
// }
// else
// {
// printf("猜对了\n");
// break;
// }
// }
//}
//
//
指针变量
int a=0
int *p=null 指针得初始化
//
//int main()
//{
// //time函数 返回一个时间戳
// //time _t time(*p) 里面是指针 ,也可以空指针time(null )
// //time _t 是一个返回值类型
// //srand是一个unsigned 类型 强制转换类型(unsigned int)
// srand((unsigned int)time(NULL)); //每次调用就会重新执行这个srand函数,所以每次都会重新生成一个起点,就是这个意思
// //放在主函数里就不会被调用重复生成
// //调用rand函数之前得先调用srand来设置
// int input = 0;
// do
// {
// meun();
// printf("请选择:");
// scanf("%d", &input);
// switch (input)
// {
// case 1:
// game();//猜数字游戏
// break;
// case 0:
// printf("退出游戏\n");
// break;
// default: //选择了其他数
// printf("选择错误,重新选择\n");
// break;
// }
// } while (input);
//
// return 0;
//}
//goto语句
//一般不用goto
//goto语句最适合的场景
//for(...){
// for (...)
// {
// }
// for (...)
// {
// if (disater)
// goto error;
// }
//关机程序
//1.电脑运行起来后,一分钟内关机
//2.如果输入:我是猪,就取消关机
//int main()
//{
// char input[20] = { 0 };
// //system 是系统函数 调用cmd差不多
// system("shutdown -s -t 60");
//
//again:
// printf("请注意,你的电脑在60s后关机,如果输入:我是猪,就取消关机");
// scanf("%s", input);
// if (strcmp(input, "我是猪") == 0) //;两个字符判断相等用strcmp函数
// {
// system("shutdown -a");
// }
// else
// {
// goto again;
// }
// return 0;
//}
//函数库的学习
//网站https://cplusplus.com/reference/cstring/strcpy/
//strcpy 从一个数组copy到另一个数组
//memset 替换
//int main()
//{
//strcpy 从一个数组copy到另一个数组
//char arr1[20] = { 0 };
//char arr2[] = {"hello bite"};
//strcpy(arr1, arr2);//函数的形式strcpy(目的地,源头)
//printf("%s\n", arr1);//hello bite
//
//memset 替换
//char arr[20] = "hello world";
//memset(arr, 'x', 5);//memst(替换位置,替换内容,替换数量)
//printf("%s\n", arr); //xxxxx world 替换差不多
//
//
// return 0;
//}
//函数的基本结构
//函数的定义
// int get_max(int x, int y)
//{
// return(x > y ? x : y);//比较谁是最大值
//}
//
//
//int main()
//{
// int a = 0;
// int b = 0;
// scanf("%d %d", &a, &b);
// //求最大值
// //函数的调用
// int m = get_max(a, b);
// printf("%d\n", m);
// return 0;
//}
//参数交换
//当实参传递给形式参数的时候,形参是实参的一份临时拷贝
//对形参的修改不会影响实参
//void Swap(int *px, int *py)
//{
// int z = *px;
// * px = *py;
// * py = z;
//
//}
//
//
//int main()
//{
// int a = 0;
// int b = 0;
// scanf("%d %d", &a, &b);
// //交换
// printf("交换前:a=%d b=%d\n", a, b);
// //a和b是实参
// //Swap(a, b);//这样实现不了
// Swap(&a, &b);//把地址传过去 指针的意义
// printf("交换后:a=%d b=%d\n", a, b);
// return 0;
//}