zoukankan      html  css  js  c++  java
  • 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的均无法进入执行,望高手解答!!!

  • 相关阅读:
    Android Service 启动和停止服务
    Android 子线程中进行UI操作遇到的小问题
    JZ66 机器人的运动范围
    JZ65 矩阵中的路径
    JZ64 滑动窗口的最大值
    JZ63 数据流中的中位数
    Z62 二叉搜索树的第k个结点
    JZ61 序列化二叉树
    JZ60 把二叉树打印成多行
    JZ59 按之字形顺序打印二叉树
  • 原文地址:https://www.cnblogs.com/qiang-wei/p/9297085.html
Copyright © 2011-2022 走看看