#include<stdio.h>
//变种二
//int main()
//{
// int x,y;
// for(x=0,y=0;x<2&&y<5;++x,y++)
// {
// printf("hehe\n");
// }
// return 0;
//}
//int main()
//{
// int i=0;
// int k=0;
// for(i=0,k=0;k=0;i++,k++)//这里的判断语句变成了赋值
// //k=0为假,所以
// k++;
// return 0;
//}
//这个代码循环零次
//do while循环
//do
// 循环语句;
//while(表达式)
//因此循环语句至少执行一次
//int main()
//{
// int i=1;
// do
// {
// printf("%d ",i);
// i++;
// }
// while(i<=10);
// return 0;
// }
//int main()
//{
// int i=1;
// do
// {
// if(i==5)
// //break;
// continue;
// printf("%d ",i);
// i++;
// }
// while(i<=10);
// return 0;
//}
//do while里面也有break和continue
//计算n的阶乘
//int main()
//{
// int n;
// scanf("%d",&n);
// int i=1;
// int m=1;
// for(i=1;i<=n;i++)
// {
// m=i*m;
// }
// printf("%d",m);
// return 0;
//}
//int main()
//{
// int i=1;
// int n=0;
// int ret=1;
// scanf("%d",&n);
// for(i=1;i<=n;i++)
// {
// ret=ret*i;
// }
// printf("%d",ret);
// return 0;
//}
//int main()
//{
// int i=1;
// int n=0;
// int ret=1;
// int sum=0;
// for(n=1;n<=3;n++)
// {
// ret=1;
// //在每次进入循环的时候需要重新赋值
// //不重新赋值就会导致不是1*1*2*3而是n*1*2*3
// for(i=1;i<=n;i++)
// {
// ret=ret*i;
// }
// sum=sum+ret;
// }
// printf("%d",sum);
// return 0;
//}
//上面代码的优化
//int main()
//{
// int i=0;
// int n=0;
// int ret=1;
// int sum=0;
// for(n=1;n<=3;n++)
// {
// ret=ret*n;
// sum=sum+ret;
// }
// printf("%d\n",sum);
// return 0;
// }
//在一个有序数组中查找具体的某个数字n
//int main()
//{
// int arr[]={1,2,3,4,5,6,7,8,9,10};
// int k=7;
// //写一个代码,在arr[]数组中找到7
// int i=0;
// int sz=sizeof(arr)/sizeof(arr[0]);
// for(i=0;i<sz;i++)
// {
// if(k==arr[i])
// {
// printf("找到啦,下标是%d",i);
// break;
// }
// }
// if(i==sz)
// {
// printf("找不到");
// }
// return 0;
// }
//这种方法效率很低,而且这是有序数组
//可以使用折半查找(二分查找算法)
//这样的遍历次数为log2n(log以2为底n的对数)
//int main()
//{
// int arr[]={1,2,3,4,5,6,7,8,9,10};
// int k=7;
// int sz=sizeof(arr)/sizeof(arr[0]);//计算元素个数
// int left=0;//左下表
// int right=sz-1;//最右面的元素下标等于元素个数减1
// while(left<=right)//不能让左下标到右下标右面
// {
// int mid=(left+right)/2;
// if(arr[mid]>k)
// {
// right=mid-1;
// }
// else if(arr[mid]<k)
// {
// left=mid+1;
// }
// else
// {
// printf("找到了,下标是:%d",mid);
// break;
// }
// }
// if(left>right)
// {
// printf("找不到");
// }
// return 0;
//}
//首先注意while的判断条件
//通过调整下标来查找元素