2014秋C++第5周项目1參考-见识刚開始学习的人常见错误
课程主页在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博客专栏================= |
2014秋C++第5周项目1參考-见识刚開始学习的人常见错误的更多相关文章
- 2014秋C++ 第7周项目 数据类型和表达式
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课 ...
- 2014秋C++ 第8周项目 分支程序设计
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703.课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课 ...
- 2014秋C++ 第9周项目 循环程序设计
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703.课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课 ...
- Surprise团队第三周项目总结
Surprise团队第二周项目总结 项目进展 这周我们小组的项目在上周的基础上进行了补充,主要注重在注册登录界面的实现,以及关于数据库的一些学习. 在设计注册登录界面时,每一块的地方控件都不一样,比如 ...
- Surprise团队第二周项目总结
Surprise团队第二周项目总结 项目进展 已实现五子棋人人模式部分 人人模式: 基本方式:采取黑棋先行,黑白交替的下棋顺序. 模式:通过鼠标点击相应棋盘中的"交叉点",在lay ...
- Surprise团队第一周项目总结
Surprise团队第一周项目总结 团队项目 基本内容 五子棋(Gobang)的开发与应用 利用Android Studio设计一款五子棋游戏,并丰富其内涵 预期目标 实现人人模式:2个用户可以在同一 ...
- JavaEDU614 团队第三周项目总结
JavaEDU614 团队第三周项目总结 本周,根据项目计划完成模块的设计代码 本项目主要是完成俄罗斯方块的基本操作.用户可以自己练习和娱乐.需要满足以下几点要求. (1)界面控制游戏开始.暂停和结束 ...
- FromBottomToTop第十三周项目博客
FromBottomToTop第十三周项目博客 本周项目计划 完成游戏核心算法以及界面相关类和怪物类 项目进展 用户可选择游戏模式,共有20张不同的地图. 炮台的建立和升级. 小怪的路径算法. 参考资 ...
- FromBottomToTop第十二周项目博客
FromBottomToTop第十二周项目博客 本周项目计划 设计整体架构,收集素材,制作出静态界面部分 项目进展 已完成游戏整体架构设计 已完成游戏界面.背景音乐等素材的收集 正在进行静态界面部分的 ...
随机推荐
- IIS-CS0016未能写入文件错误解决方法
使用IIS创建Workbench站点,运行在本地 Workbench主页显示错误,这个提示的错误信息其实是有误导人的,真的打开至c:\Windows\Microsoft.NET\Framework64 ...
- 洛谷 P1182 数列分段`Section II`【二分答案】
[代码]: #include<bits/stdc++.h> const double eps = 1e-8; const int maxn = 1e6+5; #define inf 0x3 ...
- codeforces 869A The Artful Expedient【暴力枚举/亦或性质】
A. time limit per test 1 second memory limit per test 256 megabytes input standard input output stan ...
- AHOI2009中国象棋
首先以行为阶段,根据象棋的规则,在同一行中,至多只能有两个炮,同理:在同一列中,至多只能有两个炮思考一个可以覆盖整个状态空间的dp数组:dp[i]表示到了第i行接下来我们想:某列中的炮能否通过位运算求 ...
- NULL always return false
Any comparison with null is false - = and <>, >, <, and so on. You cannot use null in an ...
- (转)解析json xml
JSON数据 {"videos":[{"id":1,"image":"resources/images/minion_01.png ...
- jQuery的实用技巧
1.禁用页面的右键菜单 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ retu ...
- 【枚举】URAL - 2081 - Faulty dial
//._. ... ._. ._. ... ._. ._. ._. ._. ._. //|.| ..| ._| ._| |_| |_. |_. ..| |_| |_| //|_| ..| |_. ._ ...
- 【计算几何】【状压dp】Codeforces Round #226 (Div. 2) D. Bear and Floodlight
读懂题意发现是傻逼状压. 只要会向量旋转,以及直线求交点坐标就行了.(验证了我这俩板子都没毛病) 细节蛮多. #include<cstdio> #include<algorithm& ...
- 十. 图形界面(GUI)设计6.文本框和文本区
在图形界面中,文本框和文本区是用于信息输入输出的组件. 文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框.JTextField类用来建立文本框.与文本框相关的接口是Action ...