#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//while循环的复习
//while循环,初始化,判断,调整
//int main()
//{
// int i = 1;//初始化
//
// while (i <= 10)//判断
// {
// printf("%d ", i);//打印数字
// i++;//调整i
// }
//
// return 0;
//}
//for语句就是把while循环的 初始化,判断,调整 放在一个括号里
//for(表达式1;表达式2;表达式3) //初始化,判断,调整
// 循环语句; 判断完后执行循环语句,最后在执行调整语句
//continue在while和for循环中的区别
//while与for的结构不同
//不可在for循环体内修改循环变量,防止for循环失去控制
//int main()
//{
// int i = 0;
// for (i = 1; i <= 10; i++) ///初始化,判断,调整 //初始化在循环中只用了一次,后面i都是经过调整的
// {
// if (i == 5)
// continue;//跳过下面的语句,但返回执行了i++,是跳到了调整语句
// printf("%d ", i); //1 2 3 4 6 7 8 9 10
// }
//}
//int main()
//{
// int i = 1;//初始化
// while (i <= 10) ///,判断
// {
// if (i == 5)
// continue;//跳过下面的语句,所以i++没有被执行,是跳到了判断语句
// printf("%d ", i); //1 2 3 4 死循环
// i++;//调整
// }
//}
//打印1-10
//int main()
//{
// int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
// //0-9
// int i = 0;
// for (i = 0; i < 10; i++)
// {
// printf("%d ", arr[i]);
// }
// return 0;//1 2 3 4 5 6 7 8 9 10
//}
//for循环的判断部分省略意味着判断恒成立(死循环)
//int main()
//{
//
// for (;;)
// {
// printf("hehe\n");
// }
// return 0;
//}
//for的嵌套
//int main()
//{
// int i = 0;
// int j = 0;
// for(i=0;i<3;i++)//每次i的进入都会让j的循环循环完再出来返回i++
// {
// for (j = 0; j < 3; j++)//进来j=0,<3,打印hehe,j++,又小于3,再打印hehe
// {
// printf("hehe\n");
// }
// }
// return 0;//打印9个hehe
//}
//
//判断语句为 i=0 时是赋值语句,0为假 ,循环不进去
//int main()
//{
// int i = 0;
// int k = 0;
// for (i = 0, k = 0; k = 0; i++, k++)
// {
// printf("hehe\n");
// k++;
// }
//
// return 0;
//}
//do while循环
//do(循环语句)
//while(判断语句); //有分号
//int main()
//{
// int i = 1;
// do
// {
// i++;//i++如果在这 就是打印234
// if (i == 5)
// break;//打印就到1 2 3 4
// //i++在头上换成continue的话就是,就是23467891011没有5
// printf("%d ",i);
// //i++;//i++在这,是continue的情况下,打印1234 后面是死循环
// }
// while (i <= 10);
//
//
// return 0;///打印1-10
}
//练习
//写代码 先想 办法(编程思维) +写代码
//编程思维需要练习
//计算n的阶乘
//int main()
//{
// int i = 1;
// int n = 0;
// int ret = 1;
// scanf("%d", &n);
// for (i = 1; i <= n; i++)
// {
// ret = ret * i;//ret每次被i计算的时候ret就变成了计算后的ret
// }
// printf("%d\n", ret);
// }
//计算1!+2!+3! +10!
//int main()
//{
// int i = 0;
// int ret = 1;
// int sum = 0;
// int n = 0;
// scanf("%d",&n);
// for (i = 1; i <= n; i++)
// {
// ret = ret * i;
// sum = sum + ret;
// }
// printf("%d\n", sum);
// return 0;
//}
//在有序数组里面找到数字 k=7
//int main()
//{
// int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
// int k = 7;
// int i = 0;
// int sz = sizeof(arr) / sizeof(arr[0]);//遍历数组,计算有10个数
// //折中查找
//
// int left = 0;
// int right = sz - 1;//数组的最右边数 arr[9]
//
// int mid = (left + right) / 2;
// while (left <= right)//判断循环是否停止
// {
// //计算的第一次这种判断
// if (arr[mid] < k)
// {
// left = mid + 1;
// }
// else if (arr[mid] > k)
// {
// right = mid - 1;
// }
// else
// {
// printf("找到了:%d\n", &mid);//mid变成一个会判断的指针
// break;//有while循环就加break跳出
// }
// }
// if (left > right)
// {
// printf("找不到\n");
// }
//
//
// return 0;
//}