#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

#include<string.h>




//

//int main()

//{

// //int ch = 0;

// ////eof-end of file 文件结束标志

// //while ((ch = getchar()) != EOF)

// //{

// // putchar(ch);

// //}

//

// //有什么用呢?

// //看下面列子

// int ret = 0;

// int ch = 0;

// char password[20] = { 0 };

// printf("请输入密码:>");

// scanf("%s", password);//输入密码,并存放在password数组中

// //输入缓冲区剩下一个'\n'

// //读取一下'\n'

// while (ch = getchar() != '\n')

// {

//  ;

// }

// printf("请确认(Y/N):>");

// ret = getchar();

// if (ret == 'Y')

// {

//  printf("确认成功\n");

// }

// else

// {

//  printf("放弃确认\n");

// }

//  

// return 0;

//}



//

//int main()

//{

// int ch = 0;

// while((ch=getchar()) != EOF)

// {

//  if (ch < '0' || ch > '9')

//   continue;

//  putchar(ch);

// }

// return 0;

//}

//细品上面列题




//       for循环

//for(表达式;表达式2;表达式3)

// 循环语句:

//表达式1: 表达式1为初始部分,用于初始化循环变量的。

//表达式2: 表达式2为条件判断部分,用于判断循环时候终止。

//表达式3: 表达式3为调整部分,用于循环条件的调整。

//int main()

//{

// int i = 0;//初始化

// while (i < 10)//条件判断

// {

//  //....

//  i++;//调整部分

// }

// return;

//}

//while循环不能做到把这三种放在一起,不容易找  所以for循环解决.....



//int main()

//{

// int i = 0;

// //初始化  判断  调整 全部放一块

// for (i = 1; i <= 10; i++)

// {

//  printf("%d", i);//12345678910

// }

// return 0;

//}


  //在for循环里的break

//int main()

//{

// int i = 0;

// //初始化  判断  调整 全部放一块

// for (i = 1; i <= 10; i++)

// {

//  if (5 == i)

//   break;

//  printf("%d", i);//1234

// }

// return 0;

//}


  //在for循环里的continue

//int main()

//{

// int i = 0;

// //初始化  判断  调整 全部放一块

// for (i = 1; i <= 10; i++)

// {

//  if (5 == i)

//   continue;

//  printf("%d", i);//1234678910

// }

// return 0;

//}


  //比较一下while循环里的continue

//int main()

//{

// int i = 0;

// while (i < 10);

// {

//  if (5 == i)

//   continue;

//  printf("%d", i);

//  i++;

// }

// return 0;

//}

//总结:for循环中的break用法和while循环的用法一致

//     for循环中的continue不会进入死循环相当于把i++放在了前面代码中

//     for循环中的continue它会跳过本次循环后面的代码,会跳到调整部分

//     while循环中的continue会跳过调整部分,导致循环变量没法调整



//不可再for循环体内修改循环变量,防止for循环失去控制.

//举个列子

//int main()

//{

// int i = 0;

// for (i = 0; i < 10; i++)

// {

//  if (i = 5)  //一般对i的调整不要放在循环内部

//   printf("haha\n");

//  printf("hehe\n");  //进入死循环

// }

// return 0;

//}


//建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

//举个列子

//int main()

//{

// int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

// int i = 0;

// //10 次循环

// //10 次打印

// //10 个元素

// for (i = 0; i < 10; i++) //“前闭后开区间”指的是i = 0;i < 10

// {

//  printf("%d ", arr[i]);

// }

// return 0;

//}


//一些for循环的变种


//int main()

//{

// //变种1

// for (;;)

// {

//  printf("hehe\n");

// }

//变种2

// int x, y;

// for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)

// {

//  printf("hehe\n");  //两次hehe

// }

// return 0;

//}


//变种1

//int main()

//{

// //变种1

// for (;;)

// {

//  printf("hehe\n");//死循环

// }

// return 0;

//}

//  1.for循环的初始化、调整、判断  都可以省略

//      但是for循环的 判断部分 如果被省略,那判断部分条件就是:恒为真

//  2.如果不是非常熟练,建议不要随便省略  列如:


//int main()

//{

// int i = 0;

// int j = 0;

// for (i=0; i < 10; i++)

// {

//  for (j=0; j < 10; j++)

//  {

//   printf("hehe\n");//10*10  == 100 输出100个hehe

//  }

// }

// return 0;

//}

//比较一下  想想为什么for循环里省略i=0和j=0为什么输出的hehe变为10?

//int main()

//{

// int i = 0;

// int j = 0;

// for (; i < 10; i++)

// {

//  for (; j < 10; j++)

//  {

//   printf("hehe\n");//输出10个hehe

//  }

// }

// return 0;

//}


//总结:当i=0时进入第二个for循环执行十次之后出去  但是当i=1时再进入 j的值没有初始化  

//      导致只能输出10个hehe



//请问循环要循环多少次?

//0次

//int main()

//{

// int i = 0;

// int k = 0;

// for (i = 0, k = 0; k = 0; i++, k++)

//  //k=0是赋值  不是判断

//  //只要k = 非零就是死循环!!!

//  k++;

// return 0;

//}



//终于最后一个循环了~_~

//                   do...while()循环

//语法:

//do

//   循环语句;

//while(表达式);


//用do...while循环打印1~10

//int main()

//{

// int i = 1;

// do

// {

//  printf("%d", i);

//  i++;

// } while (i <= 10);

// return 0;

//}


//在do...while循环中break用法和while、for循环一致



//在do...while循环中的continue

//int main()

//{

// int i = 1;

// do

// {

//  if (5 == i)

//   continue;

//  printf("%d", i);// 1,2,3,4且后面什么都不打印 程序死循环

//  i++;

// } while (i <= 10);

// return 0;

//}