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

例如:输入: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. VS项目中使用Nuget还原包后编译生产还一直报错?
  2. 今天思考一个问题,PHP const和static的区别
  3. W3Help-兼容性-知识库
  4. netcore 控制台中文乱码
  5. GO语言练习:channel select 超时机制
  6. 探索javascript----我对渐变轮播图的理解
  7. SVG 参考手册
  8. 转:strcat与strcpy与strcmp与strlen
  9. PowerDesigner建立与数据库的连接,以便生成数据库和从数据库生成到PD中。
  10. Netty学习笔记(一):接收nodejs模拟表单上传的文件
  11. Oracle loop循环无法插入数据
  12. Ibatis动态(dynamic)查询
  13. pytest框架之命令行参数1
  14. Linq使用Group By
  15. java使用spark/spark-sql处理schema数据
  16. Xilinx 学习笔记1---新建工程和创建源代码文件
  17. websocket简单理解
  18. 设置linux新用户默认当前目录及使用的shell
  19. oracle排序后的第一条记录
  20. [转]网页实时聊天之js和jQuery实现ajax长轮询 PHP

热门文章

  1. vue自定义指令笔记
  2. &lt;Stack&gt; (高频)394 ( 高频)224
  3. 基于mysqld_multi实现MySQL 5.7.24多实例多进程配置
  4. thinkphp5.1单模块设置
  5. python接口自动化8-unittest框架使用
  6. Linux 部署vue项目(使用nginx)
  7. IT兄弟连 Java语法教程 数据类型3
  8. c#汉字转拼音首字母全拼支持多音字
  9. Percona Monitoring and Management (PMM) - 快速入门
  10. SpringCloud的入门学习之Eureka(Eureka的单节点)