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

2024-03-03 09:08

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




这篇关于2014秋C++第5周项目1参考-见识初学者常见错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/769145

相关文章

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

C++一个数组赋值给另一个数组方式

《C++一个数组赋值给另一个数组方式》文章介绍了三种在C++中将一个数组赋值给另一个数组的方法:使用循环逐个元素赋值、使用标准库函数std::copy或std::memcpy以及使用标准库容器,每种方... 目录C++一个数组赋值给另一个数组循环遍历赋值使用标准库中的函数 std::copy 或 std::

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I