2014秋C++第5周项目1参考-见识初学者常见错误

简介: 课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,实践要求见http://blog.csdn.net/sxhelijian/article/details/39493833。课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 【项目1】下面是最经典和最简单的C++程序。在ideone.com中运

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,实践要求见http://blog.csdn.net/sxhelijian/article/details/39493833

课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。

 

【项目1】下面是最经典和最简单的C++程序。在ideone.com中运行程序,并在能正确运行的程序基础上,“捣乱”制造些错误,对此进行观察。经验是从错误中得来的,这个项目就是要让大家积累这一类经验。

#include <iostream>  
using namespace std;  
int main( )  
{     
    int a,b,sum;  
    cin>>a>>b;   
    sum=a+b;   
    cout<<"a+b="<<sum<<endl;   
    return 0;  
} 

(1)将第6行cin>>a>>b; 一行末尾的分号去掉要制造的错误如下(一项“捣乱”结束后,将程序再改正过来,继续“捣乱”):
(2)将第5行int a,b,sum;改为int a, b;,即声明变量时,未声明sum
(3)将第8行cout<< 写为 Cout<<,注意前面表述中的大小写
(4)将第8行cout<< 写为了 cout>>
(5)将第7行sum=a+b; 改为 sum=ab; 即漏写了加号
(6)将第10行程序最后的右花括号 } 删除
(7)将第5行int a,b,sum; 改为imt a,b,sum; 注意,可能小手一哆嗦,int成了imt
(8)你是个比贺老师还坏的坏孩子,还想到什么捣乱,自己来


参考解答:

说明:

  • 下面的提示,是ideone.com中的提法出现的错误提示,在其他平台中,可能会有不同的描述,但意思一般相同;
  • 鉴于同学们刚学,不能用太专业和深入的解释,下面的提示只追求让同学有体会即可,随着学习的进展,你自己可以给出完整的解释。

各种乱改后的解释:

(1)将第6行cin>>a>>b; 一行末尾的分号去掉
系统提示“編譯失敗(CE)”具体地:
1. prog.cpp: In function ‘int main()’:
2. prog.cpp:7:5: error: expected ‘;’ before ‘sum’
3.     sum=a+b; 
4.     ^
  第1行提示“In function ‘int main()’”,指出在函数int main()中出现错误了
  第2行提示“7:5:”指这个错误出现的原因,与第7行上溯第5行的程序有关,这是一个错误(error),原因是“expected ‘;’ before ‘sum’”,即“在sum前希望有个分号”。程序中每一个语句后都得有分号,第6行末缺分算,算帐算到第7行!这个事实要接受。修改方法,按提示,sum前,即上一行末,加上分号。
  第3行指出,错误是在“sum=a+b”这儿发现的
  第4行的“^”指向了出问题的具体位置

(2)将第5行int a,b,sum;改为int a, b;,即声明变量时,未声明sum
“編譯資訊”部分提示
1. prog.cpp: In function ‘int main()’:
2. prog.cpp:7:5: error: ‘sum’ was not declared in this scope
3.     sum=a+b; 
4.     ^
  第1行提示“In function ‘int main()’”,指出在函数int main()中出现错误了
  第2行提示“7:5:”指这个错误出现的原因,与第7行上溯第5行的程序有关,这是一个错误(error),原因是“‘sum’ was not declared in this scope”,即“sum在这个范围内没有被声明”,的确,程序中第7行要用sum,但之前未声明,错误和第7行有关;程序第5行是个声明语句,要是在此声明了,也不会出错误,说和第5行有关,也算合理。
  第3行指出,错误是在“sum=a+b”这儿发现的
  第4行的“^”指向了出问题的具体位置

(3)将第8行cout<< 写为 Cout<<,注意前面表述的大小写
  提示的第2行是:
  prog.cpp:8:5: error: ‘Cout’ was not declared in this scope
  C++的词汇中,大小写严格区分,编译器认识“cout”,遇到“Cout”不认识了,就说“Cout在这个范围内没有声明。”冷静点,不要按提示声明Cout去,而是把大写改成小写。

(4)将第8行cout<< 写为了 cout>>
  提示的第2行指出:
  prog.cpp:8:9: error: no match for ‘operator>>’(#@#&*!$#……)
  这是操作符不匹配。cout应该与<<匹配,与>>匹配的是cin。

(5)将第7行sum=a+b; 改为 sum=ab; 即漏写了加号
  提示的第2行指出
  prog.cpp:7:9: error: ‘ab’ was not declared in this scope
  漏写了加号,ab连起来是一个新的变量名,这个变量逃不脱“未被声明”。

(6)将第10行程序最后的右花括号 } 删除
  提示的第2行指出
  prog.cpp:9:13: error: expected ‘}’ at end of input
  有左括号,必须有右括号匹配,这个提示相当精准。

(7)将第5行int a,b,sum; 改为imt a,b,sum; 注意,可能小手一哆嗦,int成了imt
  出现了一堆的提示,“一错百错”?int 是数据类型的名字,写成imt,系统以为是变量名,是变量名,得提前声明,然而却没有,于是第一个提示:
  prog.cpp:5:5: error: ‘imt’ was not declared in this scope
  于是这一行也就不能当作为声明变量讲了,需要有分号啦、a、b、sum“未被声明”啦之类的错误,接踵而来。
  注意到int写对时,是蓝色的,这叫为语言本身的成份进行的“语法着色”。imt没有这样的特点,这也是待积累的经验。

 
 

=================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====




目录
相关文章
|
12月前
|
安全 程序员 编译器
【实战经验】17个C++编程常见错误及其解决方案
想必不少程序员都有类似的经历:辛苦敲完项目代码,内心满是对作品品质的自信,然而当静态扫描工具登场时,却揭示出诸多隐藏的警告问题。为了让自己的编程之路更加顺畅,也为了持续精进技艺,我想借此机会汇总分享那些常被我们无意间忽视却又导致警告的编程小细节,以此作为对未来的自我警示和提升。
1236 103
WK
|
11月前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
532 1
|
12月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
2014 3
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
225 3
|
Rust 测试技术 编译器
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
181 1
|
编译器 C++ 开发者
Visual Studio属性表:在新项目中加入已配置好的C++库
通过以上步骤可以确保Visual Studio中新项目成功地加入了之前已配置好的C++库。这个过程帮助开发者有效地管理多个项目中共享的库文件,提升开发效率。
455 0
|
存储 C++ UED
【C++】飞机大战项目记录
通过上面的设计,我们实现来看飞机大战的主要功能
216 4
|
Java C++ 开发者
如何根据项目需求选择使用C++还是Python进行内存管理?
【7月更文挑战第2天】如何根据项目需求选择使用C++还是Python进行内存管理?
112 0
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
132 0
【C++】string学习 — 手搓string类项目
C++入门项目——通讯管理系统
C++入门项目——通讯管理系统
112 0