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第十二周项目博客 本周项目计划 设计整体架构,收集素材,制作出静态界面部分 项目进展 已完成游戏整体架构设计 已完成游戏界面.背景音乐等素材的收集 正在进行静态界面部分的 ...
随机推荐
- #!bin/sh是啥
第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本,比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚 ...
- CF 1006B Polycarp's Practice【贪心】
Polycarp is practicing his problem solving skill. He has a list of n problems with difficulties a1,a ...
- 2018 ACM-ICPC 沈阳网络赛
Problem A Problem B Problem C Problem D Problem E Problem F Problem G Problem H Problem I Problem J ...
- 21、Django实战第21天:课程章节信息
在课程详情页中,点击"开始学习",就进入到这课程章节信息,这里面包含了两个页面:"章节"和评论 1.把course-video.html(章节).course- ...
- TDD开发案例
前段时间把一个界面框架完成了,今天基于这个框架开发一个小模块,在这里把这个模块设计的全过程记录下来,希望大家讨论并指正. 一.起因 公司交给我一个任务,为测试员写一个手机模拟界面,以方便她们的手机短信 ...
- cnblogs的代码高亮
由于不喜欢cnblogs原来的代码高亮方案,于是自己瞎搞,外加看这位大神的blog以及BZOJ的代码高亮,终于是搞出来了...讲讲怎么弄吧. 当然对于了解css的大神可以无视以下文字…… 其实就是登上 ...
- Linux下#!/usr/bin/env bash和#!/usr/bin/bash、#!/bin/bash的比较
#!/usr/bin/env bash #在不同的系统上提供了一些灵活性. #!/usr/bin/bash #将对给定的可执行文件系统进行显式控制. 通过/usr/bin/env运行程序,用户不需要去 ...
- MythXinWCF通用宿主绿色版V1.1
更新内容:宿主的唯一编号和名称可以输入符号"."日志文本框增加滚动条,并且总是显示文本末端增加启动方式选择:1.手动启动 2.跟随系统启动 最新下载地址: http://pan.b ...
- 【spring boot】spring cloud下spring boot微服务启动没有报错,但是访问访问不到
spring cloud下spring boot微服务启动没有报错,但是访问访问不到 解决方法: 可能是端口被占用了,但是依旧启用成功了. 更改一下项目启用的端口号,再重新启动查看是否可以正常访问.
- 让IE浏览器支持HTML5
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...