C++初学者常犯的错(持续更新)

对于一个初学者来说,常犯错是很正常的,就算是有了定功底的人也会犯一些低级错误,这很正常。现对我和学员常犯的错作一点整理,与大家共勉

1、一个变量未初始化就开始使用(如果定义在全局,变量会自动初始化,不在此列)。比如
    int a,sum;        cin>>a;    sum+=a;    cout<<sum;
2、相等判断“日常化”。比如比较两数大小
    if(a>b)cout<<">";         else if(a=b)cout<<"="; (应该是if(a==b))               else cout<<"<";
3、忘记写输入语句或输入语句放在了计算之后。比如int a,b,c;    if(a>b)c=0;    cin>>a>>b;
4、输入语句错误用法。比如cin>>a>>‘ ‘>>b>>endl;(这把输出的格式搞到输入);     cin>>a,b,c;         cin>>a(0<a<100);(把数据范围也加进了输入语句中),还有就是scanf输入格式与后面变量类型不匹配,忘记加&等
5、if语句嵌套错误。比如

//比较两数大小关系
int a,b;
cin>>a>>b;
if(a>b)cout<<">";
if(a<b)cout<<"<";
else cout<<"="; 

比较两数大小

错误原因:当遇到分支不只两种时,不想写else或漏写else。如上例上就会出现输入的数a>b,结果将会是输出了“>”和"="两个符号。这与switch语句中漏写break语句的结果相似。

6、数据类型不正确使用。比如

一本通网站1013:温度表达转化
【题目描述】
利用公式 C=5×(F−32)÷9C=5×(F−32)÷9(其中CC表示摄氏温度,FF表示华氏温度)进行计算转化,输入华氏温度FF,输出摄氏温度CC,要求精确到小数点后55位。

【输入】
输入一行,包含一个实数FF,表示华氏温度。(F≥−459.67)(F≥−459.67)
【输出】
输出一行,包含一个实数,表示对应的摄氏温度,要求精确到小数点后55位。

【输入样例】
41
【输出样例】
5.00000

温度表达转换

#include<cstdio>
int main(){
    int f;
    float c;
    scanf("%d",&f);
    c=5*(f-32)/9;
    printf("%.5f",c);
    return 0;
}#include<cstdio>
int main(){
    int f;
    float c;
    scanf("%d",&f);
    c=5*(f-32)/9;
    printf("%.5f",c);
    return 0;
}

错误代码一

错误原因:公式中都是整数运算,结果当然是整数,输出的虽然是有小数位,但那是运算结果取整后再加小数。

#include<cstdio>
int main(){
    int f;
    float c;
    scanf("%d",&f);
    c=float(5*(f-32)/9);
    printf("%.5f",c);
    return 0;
}

错误代码二

错误原因:虽然的类型转换,但这个转换跟没有一样效果。因为转换前全是整数,运算出来的也自然是整数,再加上类型转换为时己晚。

修改方法:最好第一次运算就先提升数据类型或损失精度前转换。比如运算式改为c=5*(1.0*f-32)/9或者c=5.0*(f-32)/9都是可以的。注意1.0*f实际上是把整个的数据类型隐形转换成了float。

7、循环变量书写错。比如把for(int j=1;i<100;j++)写成for(int j=1;i<100;j++)或者for(int j=1;j<100;i++),还有把for(int i=100;i>0;i--)错误地写成for(int i=100;i>0;i++)等,这些都很容易陷入死循环。

8、在使用float类型,特别是double类型时不注意这类数的误差而造成错误。可参看https://www.cnblogs.com/wendcn/p/10475883.html。

在float或double类型的数据相等时一般用|a-b|<1e-12的类似方式,而不适合直接用a==b进行判断。

9、广搜时标记不及时的错。详情参看一道广搜的错https://www.cnblogs.com/wendcn/p/10441543.html

原文地址:https://www.cnblogs.com/wendcn/p/10476260.html

时间: 2024-10-12 01:01:03

C++初学者常犯的错(持续更新)的相关文章

MySQL数据库设计常犯的错以及对性能的影响

1.过分的反范式化为表建立太多的列 我们在设计数据库的结构时,比较容易犯的第一个错误就是对表进行了过分的反范式化的设计,这就容易造成了表中的列过多,虽然说Mysql允许为一个表建立很多的列,但是由于Mysql的插件式架构的原因,前面博客已经有介绍,Mysql的服务器层和存储引擎层是分离的,Mysql的存储引擎API工作时需要把服务器层和存储引擎层之间通过缓冲格式来拷贝数据,然后在服务器层将缓冲层的数据解析成各个列,这个操作过程成本是非常高的,特别是对于MyISAM的变长结构,和Innodb这种行

各种前端资源汇总「备忘、常逛」【持续更新...】

webpack: [webpack-howto] [webpack] [http://www.infoq.com/cn/articles/react-and-webpack] JS相关: [javascript weekly] [javascript标准参考教程] --阮一峰的参考教程,可读性很好,非常不错的 [QuirksMode-DOM] [深入理解JAVASCRIPT系列] [User Timing API (window performence)] 关注ES6(ES2015): [ES6

python3 之初学者常犯的5个错误

1. Creating a copy of dictionary or lists. Whenever you need to make a copy of a dictionary or list, do not simply use the assignment operator. Right way: Use the copy()  or deepcopy()  method.  2. Dictionary keys. Remember Boolean class is the subcl

【持续更新】JavaScript常见面试题整理

[重点提前说]这篇博客里的问题涉及到了JS中常见的的基础知识点,也是面试中常见的一些问题,建议初入职场的园友Mark收藏,本文会持续更新~ 1. 引入JS的三种方式 1.在HTML标签中直接使用,直接内嵌JS(但是不提倡使用): >>>不符合W3C关于内容和行为分离的要求: 2.在HTML页面中使用<scrip> </script>标签包裹JS代码: >>>script标签可以放到页面的各种位置: 3.引入外部的JS文件使用<script&

zabbix报错整理--持续更新

遇到第一个问题:发送邮件报错: Failure when receiving data from the peer 报错内容:从对等端接收数据时失败(即从邮件接收端接收数据失败) 可能原因:邮件smtp服务出问题:或者接收邮件的邮箱smtp服务挂了 解决过程:先调试手动触发邮件,如果收不到,则更改邮件报警机制中的授权码,重新调试,发现可以正常发送了 总结:具体原因不清楚,等待后续如果再次报错:继续调试看看,持续更新~~ 原文地址:https://www.cnblogs.com/pingfanvb

自己总结的 iOS ,Mac 开源项目以及库,知识点------持续更新

自己在 git  上看到一个非常好的总结的东西,但是呢, fork  了几次,就是 fork  不到我的 git 上,干脆复制进去,但是,也是认真去每一个每一个去认真看了,并且也是补充了一些,感觉非常棒,所以好东西要分享,为啥用 CN 博客,有个好处,可以随时修改,可以持续更新,不用每次都要再发表,感觉这样棒棒的 我们 自己总结的iOS.mac开源项目及库,持续更新.... github排名 https://github.com/trending,github搜索:https://github.

Web开发人员常犯的10个错误

说到开发一个运行在现代网络中的网站:Web开发人员需要选择虚拟主机平台和底层数据存储,准备编写HTML.CSS和JavaScript用的工具,要有设计执行方式,以及一些可用的JavaScript库/框架.在将任务分解为这几步之后,接下来要做的就简单多了,可以去网上找文章,浏览论坛,看看那些能提供更好的Web体验提示的示例. 然而不管是走哪条路,犯错却是每一个开发人员都不可避免的.虽然有些错误与某一个具体的行为相关,但有些错误却是所有Web开发人员都需要面对的挑战.因此,通过研究,体验和观察,我总

Python程序员最常犯的十个错误

不管是在学习还是工作过程中,人都会犯错.虽然Python的语法简单.灵活,但也一样存在一些不小的坑,一不小心,初学者和资深Python程序员都有可能会栽跟头.本文是Toptal网站的程序员梳理的10大常见错误,非常有参考意义.大家在开发过程中需要格外注意.译文中如有理解错误的地方,可以在网站留言或通过微信公众号编程派回复. 常见错误1:错误地将表达式作为函数的默认参数 在Python中,我们可以为函数的某个参数设置默认值,使该参数成为可选参数.虽然这是一个很好的语言特性,但是当默认值是可变类型时

android开发开源宝贝——持续更新。。。

2016年11月11日更新 http://www.apkbus.com/forum-417-1.html http://p.codekk.com/detail/Android/hejunlin2013/LivePlayback www.codekk.com https://github.com/Trinea/android-open-project Android 开源项目分类汇总 我们的微信公众号:codekk.二维码如下: 专注于 Android 开源分享.源码解析.框架设计.Android