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

例如:输入:ABCDE

A

输出:1

错误代码如下:

#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
int count=;
char last;
getline(cin,str);
scanf("%c",&last);
for(int i=;i<str.size();i++)
{
if((last>=''&&last<='')||(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 ;
}

正确代码如下:

#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
int count=;
char last;
getline(cin,str);
scanf("%c",&last);
for(int i=;i<str.size();i++)
{
if((last>=''&&last<='')||(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 ;
}

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

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

随机推荐

  1. mysql 安装(Linux、Ubuntu)

    1.检查系统是否已经安装过mysql rpm -qa | grep mysql 若出现类似于以上的结果则表明系统已经安装过mysql,执行以下命令卸载 rpm -e --nodeps mysql-co ...

  2. Linux IO协议栈

    图片来源自网络,保持更新:更多内容请关注 cnblogs.com/xuyaowen 参考链接: https://zhuanlan.zhihu.com/p/39721251 http://blog.yu ...

  3. Python—创建进程池的方式

    创建进程池 from multiprocessing import Pool import time,os result = [] # 存放所有worker函数的返回值 def worker(msg) ...

  4. Codeforces Round #597 (Div. 2) E. Hyakugoku and Ladders 概率dp

    E. Hyakugoku and Ladders Hyakugoku has just retired from being the resident deity of the South Black ...

  5. 暑期班--JAVA无敌课程---第一天-Day01-----Java基础

    1.Java发展历史 1.1Games Golsing Java创始人 2.What is JDK 3.记本本开发第一个Java程序 巴拉巴拉 巴拉巴拉 巴拉巴拉 巴拉巴拉 巴拉巴拉 巴拉巴拉 巴拉巴 ...

  6. IT兄弟连 Java语法教程 数据类型转换

    类型转换是将一个值从一种类型更改为另一种类型的过程.例如,可以将String(字符串,字符串是Java中非常特殊的数据类型,字符串属于引用类型,但是可以像基本类型一样使用字面值赋值)类型数据“456” ...

  7. 使用csv模块读写csv格式文件

    import csv class HandleCsv: ''' csv文件处理类 ''' def __init__(self, filename): ''' 构造器 :param filename: ...

  8. 将tf-faster-rcnn检测结果画在一张图像内

    https://blog.csdn.net/weixin_42111393/article/details/82940681

  9. 为了“小命”,这款APP一定要下!火爆了!

    前言中国地震台网在 6 月 17 日测定:6 月 17 日 22 时 55 分,四川省宜宾市长宁县发生 6 级地震,震源深度 16 千米.成都高新减灾研究所通过电台广播.手机短信.电视等途径,提前 6 ...

  10. C# .NET 使用 NPOI 生成 .xlsx 格式 Excel

    IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("-"); IRow ro ...