#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//if语句
//语法结构:
//if(表达式) 表达式结果为真/为非0
// 语句;(执行)
//int main()
//{
//if (3 == 5)//==:判断相等
// printf("hehe\n");//(条件为假 打印不出)
/*int age = 20;*/
//if (age < 18)
//{
// printf("未成年\n");
// printf("不能饮酒\n");
//}// if两条语句 要加个大括号 一条可以不用 else同理
//else
// printf("成年、\n");
//
// int age = 10;
// if (age < 18) //这里if如果直接打印青年不能写(18<=age<28) 10<18会成为假条件
// printf("青少年\n");
// else if (age >= 18 && age < 28) //两条件要同时满足用“&&”:并且
// printf("青年\n");
// else if (age >= 28 && age < 40)
// printf("壮年\n");
// //..... 多分支语句
// else if (age >= 60 && age <= 100)
// printf("老年\n");
// else //else直接表示100岁以上
// printf("老寿星\n");
// return 0;
//}
//int main()
//{
// //判断奇数
// int num = 0;
// scanf("%d", &num);
// //判断
// if (num % 2 == 1)
// printf("奇数\n");
// else
// printf("偶数\n");
// return 0;
//}
//输出1-100内的奇数
//一种写法
// int main()
//{
// int i = 1;
// while (i <= 100)
// {
// if(i % 2 == 1)
// printf("%d\n", i);
// i++;
// }
//
// return 0;
//}
//另一种
// int main()
//{
// int i = 1;
// while (i <= 100)
// {
// printf("%d\n", i);
// i+=2;
// }
//
// return 0;
//}
//switch语句
//用法:switch (整型表达式)
// {
// 语句项: 语句项是一些case语句 case:整型常量表达式
// }
//such 输入1打印星期1,输入2打印......
//int main()
//{
// int day = 0;
// scanf("%d", &day);
/* 用if else写:
if (1 == day)
printf("星期一\n");
else if (2 == day)
printf("星期二\n");
else if (3 == day);
printf("星期三\n");
else...
*/
//用switch写
//switch (day)
//{
//case 1:
// printf("星期一\n");
// break; //后面都要价格break case是入口
//case 2: //不加break 假如输入3后面的星期34567都会打印
// printf("星期二\n");
// break;
//case 3:
// printf("星期三\n");
// break;
//case 4: //case后必须是整型常量表达式
// printf("星期四\n");
// break;
//case 5:
// printf("星期五\n");
// break;
//case 6:
// printf("星期六\n");
// break;
//case 7:
// printf("星期日\n");
// break;
//}
//如果输入1-5 输出weekday 6-7输出weekend,则可以:
// switch (day)
// {
// case 1:
// case 2:
// case 3:
// case 4:
// case 5:
// printf("weekday\n");
// break;
// case 6:
// case 7:
// printf("weekend\n");
// break;
// default: //default语句:所有case不能匹配的都到了default 比如输出089
// printf("选择错误\n");
// break;
// }
// return 0;
//}
/*
int main()
{
int n = 1;
int m = 2;
switch (n) //n判断 n=1
{
case 1:m++; //进入case1 m=3
case 2:n++; //没有break 进入case2 n=2
case 3: //进入case3
switch (n) //继续用n来判断
{//switch可以嵌套使用
case 1:n++; //此时n=2 所以进入case2
case 2:m++; n++; //进入case2 m=4 m=3
break;
}
case 4:
m++; //继续case4 m=5
break;
default:
break;
}
printf("m = %d,n = %d\n", m, n); //最后输出m=5 n=3
return 0;
}
*/
//
// if(条件)
// 条件为真执行语句;
//int main()
//{
// if (1)
// {
// printf("hehe\n");
// }
// return 0;
//}
//while循环 语法结构:
//while(表达式)
// 表达式为真执行循环语句: 执行完再进入while再判断再循环.....
//打印1-10数字
//int main()
//{
// int i = 1;
// while (i <= 10)
// {
// printf("%d ", i);
// i++;
// }
// return 0;
//}
//遇到break会跳出循环
//int main()
//{
// int i = 1;
// while (i <= 10)
// {
// if (i == 5);
// break; //这时候i=5的时候会跳出循环
// printf("%d ", i);
// i++;
// }
// return 0;
//}
//int main()
//{
// int i = 1;
// while (i <= 10)
// {
// i++;
// if (i == 5);
// continue;
// printf("%d ", i); //这时候打印结果为2-11没 有5
// } // continue会跳过本次循环后面的代码 直接而去判断部分,执行下一次循环
// return 0; //二break是用于永久的终止循环
//}
//int main()
//{
// EOF;//end of file 文件结束
// //int ch = getchar(); //getchar()是获取一个字符的Assci码值 %c表示以字符形式输出
// //printf("%c\n", ch);//打印方法1
// //putchar(ch); //方法2 //putchar()表示打印这个值表示的字符
//
// //int ch = 0;
// // while((ch=getchar()) != EOF) //!= 用于判断:如果不相等
// // {
// // putchar(ch);
// // }
//
// //举上述代码的例子
// //假设密码是一个数组
// char password[20] = { 0 };
// printf("请输入密码:>");
// scanf("%s", password);//假设密码为123456 //数组名本来就是地址 不需要取地址符&
//
// printf("请确认密码(Y/N)");
// int ret = getchar(); //代码运行结果:这个时候ctrl+F5运行代码出现请输入密码 输入123456后按回车
// if ('Y' == ret) //会直接出现请确认密码(Y/N)NO 这里直接出现No 都没让确认
// { //结果解释:
// printf("Yes\n"); //scanf和getchar是一个类型的 他们从输入缓冲区读取
// } //这个类型的代码与键盘之间有一个输入缓冲区(等待我们键盘输入到输入缓冲区后读取)
// else //我们输入123456后边会自动出现\n 出现\n scanf才能拿到数据 但是scanf只拿走了123456
// { //留下一个\n被getchar拿走放入了ret \n不等于Y 所以会进入else出现No
// printf("No\n"); //正确的应该是不留下\n 让getchar等待确认
// }
// return 0;
//}
//解决办法
//int main()
//{
// char password[20] = { 0 };
// printf("请输入密码:>");
// scanf("%s", password);//假设密码为123456
// getchar(); //这里补一个getchar读取走\n 就会出现请确认密码 等待确认
// printf("请确认密码(Y/N)");
// int ret = getchar(); //这时候运行代码 如果输入密码为:123456 asdsa\n(中间有个空格)
// if ('Y' == ret) //回车后还是会直接出现 请确认密码(Y/N)NO
// { //因为字符串以空格为结束标志 scanf只读走了123456
// printf("Yes\n"); //getchar会只拿走空格 所以还会直接出现No
// }
// else
// {
// printf("No\n");
// }
// return 0;
// }
//再次改进
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", password);//假设密码为123456
int ch = 0;
while ((ch = getchar()) != '\n') //补入一个循环
{
;
}
printf("请确认密码(Y/N)");
int ret = getchar();
if ('Y' == ret)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}