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第十二周项目博客 本周项目计划 设计整体架构,收集素材,制作出静态界面部分 项目进展 已完成游戏整体架构设计 已完成游戏界面.背景音乐等素材的收集 正在进行静态界面部分的 ...
随机推荐
- C、C++ static 的作用
1.隐藏 当同时编译多个文件时,所有未加static关键字的全局变量和函数都具有全局可见性. 例如:同时编译两个源文件 //ghz.c #include <stdio.h> char a ...
- ubuntu下执行ulimit返回“不允许的操作”,问题解决思路
在ubuntu下执行ulimit,希望修改允许的最大打开文件数,但返回“不允许的操作”. 使用ulimit -a查看当前配置 core file size (blocks, -c) 0 data se ...
- CF GukiZ hates Boxes 【二分+贪心】
Professor GukiZ is concerned about making his way to school, because massive piles of boxes are bloc ...
- HDU 1106 排序(排序)
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数 ...
- hdu6041
hdu6041 题意 给出一个仙人掌. 如果一个无向连通图的任意一条边最多属于一个简单环,我们就称之为仙人掌.所谓简单环即不经过重复的结点的环. 求前 \(K\) 小生成树 . 分析 仙人掌中每个环中 ...
- Xamarin XAML语言教程构建ControlTemplate控件模板
Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的 ...
- 利用Java的反射与代理机制实现AOP
在上一篇文章中,我们讲述了利用Java的反射机制中实现Spring中的IOC,在本文中,我们将更进一步,讲述用Java的反射和动态代理机制来实现Spring的AOP. 一.AOP概述 AOP(Aspe ...
- CentOS正确关机方法(转)
CentOS正确关机方法 1关机前准备 1.1观察系统使用状态 · 谁在线:who · 联网状态:netstat -a · 后台执行的程序:ps -au ...
- [CF413D]2048
题目大意: 在一个长度为$n(n\le2000)$的数组中填数$2$或$4$,待所有数字全部填好后,按照类似于2048的规则向左合并.给定某些格子上的数,问在当前情况下要使得合并后的最大数超过$2^k ...
- Eclipse的workspace中放入Ext JS卡死或OOM的解决方案
Eclipse的workspace中放入Ext JS卡死或OOM的解决方案 原因:是由于Ext JS 的所有的文件js验证 方法一:关于Eclipse解决Ext JS卡死方案: 打开Eclipse的w ...