| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 这个错误初学者一定会犯:C语言学习日志(三) -> 正文阅读 |
|
[C++知识库]这个错误初学者一定会犯:C语言学习日志(三) |
引言:? ? ? ? ? ? ? 在C语言学习巩固的过程,难免会遇到错误。今天我室友在完成编程作业的过程中遇到一个非常有意思的问题,我们来一起看一看吧; 题目:【问题描述】编程实现在一个字符串中查找指定的字符,并输出指定的字符在字符串中出现的次数及位置,如果该字符串中不包含指定的字符,请输出提示信息。 【输入形式】第一行输入字符串,第二行输入要查找的字符 【样例输入】 dfdfjkjjfdffd d 4 0 2 9 12 接下来就是我室友的解题原本:
? ? ? ? ? ? ?不用看代码的实现思路的复杂,毕竟能完成任务的程序就是好程序; ? ? ? ? ? ? ?乍看一下代码的实现,可以说感觉是能够完成任务;事实证明也确乎如此: ? ? ? ? ? ? ?编译一下,yea~没出错!似乎向成功迈出一步了! ? ? ? ? ? ? ? ? 芜湖,起飞 ,来测试结果;怎么看,三组结果都是对的; ? ? ? ? ? ? ? ? 似乎一切都非常顺利,但是上交时那个有个测试结果却把这个小小的bug炸了出来; ? ? ? ? ? ? ?它能够输出字符重复的次数,但是它的下标不输出了! ? ? ? ? ? ?我们不信,再换了这串字符的另一个字符,下标成功输出了! ? ? ? ? ? ? 这反而令我们更加百思不得其解了;当时心想:“会不会是神秘力量影响,哈哈哈”; ? ? ? ? ? ? ?在此后我们尝试了第一次修改,因为它的下标不输出,所以我们大概可以定位到后面的代码出错了,因此选择了改成这样,结果就正确了
? ? ? ? ? ? ? ? 这样一对比,很容易发现是限制条件出了问题,我们突然灵光一现,count[j] != '\0'; ? ? ? ? ? ?一定出了问题!在反复观察代码后,终于是发现了问题! ? ? 因为在前面加上了:
?利用‘\0’来检测输出结束;似乎很合理,但是我们忽略了一个重要的问题: ? ? ? ? ? ? ? ?‘\0’在计算机里面是怎么储存的?以asc||码值来储存的!在我们眼里它是\0;而在计算机内他就是0! ? ? ? ? ? ? ? 因此,在检查到0这个下标中是我们要检查重复的字母时,会在count里面储存下标? 0; ? ? ? ? ? ? ? 就因为这样,将count[j] != '\0'翻译过去就会发现,就是count[j]? != 0; ? ? ? ? ? ? ?因此,输出时检测到count[1]? ?= 0;直接不符合限制条件,pase掉,不执行后面的了! 总结:? ? ? ? ? ? ??今天这个小小的错误显而易见的在警告我们,不能够再单纯的以人的视角去观察程序,而是选择学会用计算机规律去考虑有关于代码的问题,要学会”换位思考“; ? ? ? ? ? ?同样要记住的一个简单知识点就是:字符在计算机中是以数字的方式储存,可以说int整型与char的字符没有严格界限;
? ? ? ? ? ? ?都会输出a这个字符; ### ? ? ? ? 好了,今天的分享就到这里了,觉得有帮助的话,就点个赞再走吧!? ? ? ? ? ? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:20:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |