if语句 switch语句

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值