• else if 使用注意


    写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。

    例如:输入:ABCDE

                         A

    输出:1

    错误代码如下:

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
        string str;
        int count=0;
        char last;
        getline(cin,str);
        scanf("%c",&last);
        for(int i=0;i<str.size();i++)
        {
            if((last>='0'&&last<='9')||(last==' '))
                if(last==str[i])
                    count++;
            else if((last>='a')&&(last<='z'))
                if(last==str[i]||last==str[i]+('a'-'A'))
                    count++;
            else if((last>='A')&&(last<='Z'))
                if(last==str[i]||last==str[i]-('a'-'A'))
                    count++;
        }
        cout<<count<<endl;
        return 0;
    }

    正确代码如下:

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
        string str;
        int count=0;
        char last;
        getline(cin,str);
        scanf("%c",&last);
        for(int i=0;i<str.size();i++)
        {
            if((last>='0'&&last<='9')||(last==' '))
                if(last==str[i])
                    count++;
            if((last>='a')&&(last<='z'))
                if(last==str[i]||last==str[i]+('a'-'A'))
                    count++;
            if((last>='A')&&(last<='Z'))
                if(last==str[i]||last==str[i]-('a'-'A'))
                    count++;
        }
        cout<<count<<endl;
        return 0;
    }

    可见,对比正确代码和错误代码,不同之处只有for循环内部的分支选择,为什么此处else if用法是错误的呢?

    经过调试,发现错误代码中满足第一个if的可以进入,满足后边两个else if的均无法进入执行,望高手解答!!!

  • 相关阅读:
    hibernate持久化框架
    spring之AOP
    spring之bean
    spring之IOC
    pdf文件工具typora
    vsCode写vue项目一键生成.vue模板
    微信小程序瀑布流
    小程序接入阿拉丁
    小程序引入背景图片不显示问题解决
    Mac OS下使用rz和sz
  • 原文地址:https://www.cnblogs.com/qiang-wei/p/9297085.html
Copyright © 2020-2023  润新知