/*分支和循环*/
/*
分支语句:
if switch
循环语句:
while for do while goto
由一条分号隔开的就是一条语句。
一个分号也是一条语句,只不过是一条空语句。
*/
/*if语句*/
//#include<stdio.h>
//int main()
//{
// int age = 20;
// if(age < 18) //单分支if
// printf("未成年\n");
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int age = 20;
// if(age < 18)
// printf("未成年\n");
// else
// printf("已成年\n");
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int age = 10;
// if(age < 18)
// printf("未成年\n");
// else if(age>=18 && age<28)
// printf("青年\n");
// else if(age>=28 && age<50)
// printf("壮年\n");
// else if(age>=50 && age<90)
// printf("老年\n");
// else
// printf("老不死\n");
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int age = 100;
// if(age < 18)
// printf("未成年\n");
// else
// {
// if(age>=18 && age<28)
// printf("青年\n");
// else if(age>=28 && age<50)
// printf("壮年\n");
// else if(age>=50 && age<90)
// printf("老年\n");
// else
// printf("老不死\n");
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int age = 100;
// if(age < 18)
// {
// printf("未成年\n");
// printf("不能谈恋爱\n");
// } // 这里一对大括号就是一个代码块
// else
// {
// if(age>=18 && age<28)
// printf("青年\n");
// else if(age>=28 && age<50)
// printf("壮年\n");
// else if(age>=50 && age<90)
// printf("老年\n");
// else
// printf("老不死\n");
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int a = 0;
// int b = 2;
// if(a == 1) //因为第一个if执行不成功且没有else与其匹配,所以第二个if无法执行,什么都打印不出来
// if (b == 2)
// printf("hehe\n");
// else //这里的else与第二个if匹配。else与离它最近的if匹配
// printf("haha\n");
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int a = 1;
// int b = 2;
// if(a == 1)
// {
// if (b == 3)
// printf("hehe\n");
// else
// printf("haha\n");
// }
// else
// printf("hhh\n");
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int num = 4;
// if (num = 5) //这里的 “=”是赋值而不是判断相等。一定要用两个等号
// {
// printf("hehe\n");
// }
// return 0;
//}
//#include<stdio.h> //打印1到100之间的基数
//int main()
//{
// int a = 0;
// int b = 2;
// while (a<=100)
// {
// if(a%b == 1)
// printf("%d\n", a);
// a++;
// }
// return 0;
//}
//#include<stdio.h> //打印1到100之间的基数
//int main()
//{
// int i = 1;
// while (i<=100)
// {
// printf("%d\n", i);
// i += 2;
// }
// return 0;
//}
/*多分支情况用swit语句*/
//switch定义的类型必须是整形,不能是浮点形
//#include<stdio.h>
//int main()
//{
// int day = 0;
// scanf("%d", &day);
// switch(day)
// {
// case 1 + 0: //case后面必须是整形常量表达式
// printf("星期1\n");
// break; //跳出switch循环
// case 2:
// printf("星期2\n");
// break;
// case 1 + 2:
// printf("星期3\n");
// break;
// case 4:
// printf("星期4\n");
// break;
// case 5:
// printf("星期5\n");
// break;
// case 6:
// printf("星期6\n");
// break;
// case 7:
// printf("星期天\n");
// break;
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int day = 0;
// int n = 1;
// scanf("%d", &day); //scanf取地址的时候,%d后面不能有"\n"或者空格之类的东西
// switch(day)
// {
// case 1+0: //case后面一定要用冒号
// case 1+1:
// case 3:
// case 4:
// case 5:
// if (n == 1 || 2 || 3 || 4 || 5)
// printf("hehe\n");
// printf("工作日\n");
// break;
// case 6:
// case 7:
// if (n == 6 || 7)
// printf("haha\n");
// printf("休息日\n");
// break;
// default: //default的意思是如果上面的情况都无法执行,则执行default情况
// printf("输入错误\n");
// break;
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int n = 1;
// int m = 2;
// switch(n)
// {
// case 1:
// m++;
// case 2:
// n++;
// case 3:
// switch(n)
// {
// case 1: //在上面的case2执行过后n的值就变为了2,所以说,嵌套的switch语句中case 1(在n=1的时候执行)就不再执行,直接执行case2的情况
// n++;
// case 2:
// m++;
// n++;
// break;
// }
// case 4:
// m++;
// break;
// default:
// break;
// }
// printf("m = %d, n = %d\n", m, n);
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int i = 1;
// while(i<=10)
// {
// if(i == 5)
// break;
// printf("%d ", i);
// i++;
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int i = 1;
// while(i<=10)
// {
// if(i == 5)
// continue; //continue :跳过本次循环的代码继续从头开始执行循环
// printf("%d ", i);//程序进入死循环。当i等于5的时候继续跳到上面的while进行判断,判断之后继续往进行。当再次进行至i等于5的时候又跳到上面的while。
// i++;
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int i = 1;
// while(i<=10)
// {
// i++;
// if(i == 5)
// continue; //continue :是用于终止本次循环的,也就是本次循环中出continue后面的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断
// printf("%d ", i);//程序进入死循环。当i等于5的时候继续跳到上面的while进行判断,判断之后继续往进行。当再次进行至i等于5的时候又跳到上面的while。
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int ch = getchar();
// putchar(ch);
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int ch = 0;
// //ctrl + z
// //EOF --> -1
// while((ch = getchar()) !=EOF)
// {
// putchar(ch);
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int ch = 0;
// int ret = 0;
// char password[20] = {0};
// printf("请输入密码:>");
// scanf("%s", password); //scaf用来接收用户输入的数据。输入密码并存放在password数组中
// //当输入完密码之后会按一下“\n”,那么这时缓冲区还剩一个“\n”没有被scanf读取走
// //将“\n”读取走
// while((ch = getchar()) !='\n') //将剩下的“\n”读取走
// {
// };
// printf("请确认(Y/X):>");
// ret = getchar();
// if(ret == 'Y')
// {
// printf("确认成功");
// }
// else
// {
// printf("放弃确认");
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int ch = 0;
// while((ch = getchar()) !=EOF)
// {
// if (ch<'0' || ch>'9') //0在ASCII表中的值是48,9在ASCII表中的数值是57.所以说非数字字符执行continue
// continue;
// putchar(ch);
// }
// return 0;
//}
/*for(初始化部分; 条件判断部分; 变量调整部分)*/
//#include<stdio.h>
//int main()
//{
// int i = 0;
// for(i = 1; i <= 10; i++)
// {
// if(i == 5)
// continue;
// printf("%d\n", i);
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int i = 1;
// while(i<=10)
// {
// i++;
// if(i == 5)
// continue;
// printf("%d\n", i);
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// char ch[10] = {1,2,3,4,5,6,7,8,9,10};
// int i = 0;
// //for循环尽量用开区间。因为这样区间后的数字具有某种意义
// // 10次循环,10次打印,10个元素
// for(i = 0; i<10; i++)
// {
// printf("%d\n", ch[i]);
// }
// return 0;
// }
//#include<stdio.h>
//int main()
//{
// int i = 0;
// int j = 0;
// for(i = 0; i<10; i++)
// {
// for(j = 0; j<10; j++)
// printf("hehe\n");
// //会打印100个呵呵
// //i = 1的时候,j循环10次跳出for循环,i = 2的时候j又循环10次
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int x, y;
// for(x = 0, y = 0; x<2 && y<5; ++x, ++y)
// {
// printf("hehe\n");
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int i = 0;
// int k = 0;
// for (i = 0, k = 0; k == 0; k++, i++)
// k++;
// printf("%d\t%d\n", i, k);
// return 0;
//}
/*do while循环先循环再判断。do后面跟的是循环语句,while后面括号里加的是判断语句*/
//#include<stdio.h>
//int main()
//{
// //打印1到10的数字
// int i = 1;
// do
// {
// printf("%d\n", i);
// i++;
// }
// while(i<=10);
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int i = 0;
// do
// {
// i++;
// if(i == 5)
// continue;
// printf("%d\n", i);
// }
// while(i < 10);
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int i = 1;
// do
// {
// if(i == 5)
// continue;
// printf("%d\n", i);
// i++;
// }
// while(i<=10);
// return 0;
//}
/*goto语句*/
//#include<stdio.h>
//int main()
//{
//again:
// printf("Hllo world!\n");
// goto again;
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// printf("Hello world!\n");
// goto again;
// printf("Hi\n");
//again:
// printf("Hello\n");
// return 0;
//}