#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
/*
1.分支语句
if switch
2.循环语句
while for do...while
3.goto语句
*/
//就近原则
//无输出
//int main()
//{
// int a = 0;
// int b = 2;
// if (a == 1)
// if (b == 2)
// printf("hehe\n");
// else
// printf("haha\n");
// return 0;
//}
//int MAX(int x, int y)
//{
//可读性不强,易看错
//if (x > y)
//{
// return x;
//}
//return y;
//正确写法:
//if (x > y)
//{
// return x;
//}
// }
//int main()
//{
// int x = 10;
// int y = 20;
// int num = 4;
// int max = MAX(x, y);
// printf("%d\n", max);
// //if (num = 5)//hehe
// if(5 == num)//这种写法更加好,不容易出现上一行代码的情况
// {
// printf("hehe\n");
// }
// return 0;
//}
//判断一个数字是否为奇数
//int main()
//{
// int a = 34;
// printf("请输入一个整数:");
// scanf_s("%d", &a);
// //判断该数字是否为奇数 a%2=1
// if ( a % 2 == 1)
// {
// printf("a 是奇数\n");
// }
// else
// printf("a不是奇数\n");
// return 0;
// }
//
//int main()
//{
//判断1-100之间的奇数
/*方法一
int i = 1;
while (i <= 100)
{
printf("%d ", i);
i += 2;
}
*/
//方法二
/*int i = 1;
while (i <= 100)
{
if (i % 2 == 1)
{
printf("%d ", i);
}
i++;
}
*/
// return 0;
//}
//方法三
//int main()
//{
// //创建一个1-100的数组
// int arr[100] = { 0 };
// int i = 0;
// //定义一个中间值
// int teap = 1;
// //填充数组
// for (i = 0; i < 100; i++)
// {
// arr[i] = teap;//arr[0] = 1;
// teap++;//teap = 2;
// }
// //循环整个数组
// int j = 0;
// int count = 0;
// printf("1-100之间的奇数为:");
// for (j = 0; j < 100; j++)
// {
// if (arr[j] % 2 == 1)
// {
// printf("%d ", arr[j]);
// count++;
// }
// }
// printf("count = %d\n", count);
// return 0;
//}
/*
switch(整型表达式)
{
case 整型/整型常量表达式:
}
*/
//int main()
//{
// int day = 0;
// scanf_s("%d", &day);
// switch (day)
// {
// case 1://case n是错误的表达,case 1+0是可以的
// printf("星期一\n");
// break;//结束整个循环
// case 2:
// printf("星期二\n");
// break;
// case 3:
// printf("星期三\n");
// break;
// case 4:
// printf("星期四\n");
// break;
// case 5:
// printf("星期五\n");
// break;
// case 6:
// printf("星期六\n");
// break;
// case 7:
// printf("星期天\n");
// break;
// default://处理一些非法输入,提示输入错误,可有可无,建议放在最后
// printf("输出错误\n");
// break;
// }
// return 0;
//}
//int main()
//{
// int n = 1;
// int m = 2;
// switch (n)
// {
// case 1:
// m++;//3
// case 2:
// n++;//2
// case 3:
// switch (n)//2
// {
// case 1:
// n++;
// case 2:
// m++;//4
// n++;//3
// break;//结束循环
// }
// case 4:
// m++;//5
// break;
// default:
// break;
// }
// printf("m = %d n = %d\n", m, n);//5 3
// return 0;
//}
/*continue在while循环中的作用:用于终止本次循环的,
也就是循环中continue后边的代码不会再执行,
而是直接跳转到while语句的判断部分,进行下一次循环的入口判断
*/
/* break在while循环中的作用:在循环中只要遇到break,
就停止后期的所有的循环,直接终止循环---用于永久终止循环的
*/
//输出1-10的数字
//int main()
//{
// int i = 1;
// //while (i <= 10)
// //{
// // printf("%d ", i);//12345678910
// // i++;
// //}
// while (i <= 10)
// {
// //if (i == 5)
// // continue;//死循环,i变量没有发生改变
// //if (i == 5)//输出1234,到i=5时,直接跳出循环
// // break;
// //printf("%d ", i);
// //i++;
// i++;
// if (i == 5)//2 3 4 6 7 8 9 10 11
// continue;
// printf("%d ", i);
// }
// return 0;
//}
//int main()
//{
// int ch = 0;
// //EOF---end of flie 文件结束标志
// //ctrl+z可以结束整个while循环,但是输出EOF不能结束while循环
// while ((ch = getchar() != EOF))
// {
// putchar(ch);
// }
// return 0;
//}
//int main()
//{
// int ret = 0;
// int ch = 0;
// char password[20] = { 0 };
// printf("输出密码:>");
// scanf("%s ", password);//输入密码时按下回车---\n,而%s只读取数字,还有其他符号未读取
// 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;
// //相同的输出结果
// printf("%c\n", ch);
// putchar(ch);
// }
// return 0;
//}
//for循环
//int main()
//{
// int i = 0;
// // 初始化 判断 调整
// for (i = 1; i < 10; i++)
// {
// //死循环
// if (i = 5)//不可在for循环内修改循环变量,防止for循环失去控制
// printf("haha\n");
// printf("hehe\n");
// }
// return 0;
//}
//int main()
//{
// int i = 0;
// //i < 10
// for (i = 0; i <= 9; i++)//建议for循环中循环的控制变量的取值采用的是"前闭后开"写法
// {
// printf("%d ", i);
// }
// return 0;
//}
//变种一:
//int main()
//{
// int i = 0;
// int j = 0;
// //输出结果为10次hehe
// for (; i < 10; i++)
// {
// for (; j < 10; j++)
// {
// printf("hehe\n");
// }
// }
// return 0;
//}
/*
for循环可以省略初始化,条件,调整,但是不可盲目省略条件,就会像下面代码一样陷入死循环
*/
//int main()
//{
// for (; ;)//死循环
// {
// printf("haha\n");
// }
// return 0;
//}
//变种二:
//int main()
//{
// int x = 0;
// int y = 0;
// //两个for循环镶嵌
// for (x = 0, y = 0; x < 2 && y<5; ++x, y++)
// {
// printf("haha\n");//两个haha
// }
// return 0;
//}
//笔试题:循环了多少次?
//int main()
//{
// int i = 0;
// int k = 0;
// //循环0次 k=0---条件判断为假,循环不进去
// for (i = 0, k = 0; k = 0; i++, k++)
// k++;
//}
/* do while循环的结构--特点:循环语句至少执行一次,使用场景有限,不常用
* do{
* 循环语句;
* }while(表达式);
*/
//打印1-10
//int main()
//{
// int i = 1;
// do {
// printf("%d ", i);
// i++;
// } while (i < 11);
// return 0;
//}