2020面向对象程序设计寒假作业1题解(问答题与实践题)

2020面向对象程序设计寒假作业1(问答题与实践题)

这个作业属于哪个课程 [2020面向对象程序设计](link https://edu.cnblogs.com/campus/fzu/2020OOP)
这个作业要求在哪里 [2020面向对象程序设计寒假作业1](link https://edu.cnblogs.com/campus/fzu/2020OOP/homework/10224)
这个作业的目标 1.问答题:
(1)回答以下问题:
如果你不了解C++请回答以下问题:你认为C语言有什么缺陷(你觉得哪里用的不顺手)。
如果你已经了解C++请回答以下问题:你觉得C++和C语言比有什么优点。
(2)查阅相关资料,简述一下C语言/C++的编译过程。

2.实践题:
自己动手,完成以下任务:
(1)查看自己的C++编译器版本。
(2)使用命令行编译一份C语言/C++代码。

3.编程题(请使用C语言或者C++完成以下题目):
编程要求
编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。
变量定义:整数 钱包 等于 零
运算(加法):钱包 增加 四
运算(减法):钱包 减少 四
输出:看看 钱包
作业正文 [问答题与实践题](link https://www.cnblogs.com/beyondzones/p/12219238.html) [编程题](link https://www.cnblogs.com/beyondzones/p/12234007.html)
其他参考文献 [C语言编译过程详解](link https://www.cnblogs.com/CarpenterLee/p/5994681.html) 静态链接与动态链接

1.问答题

(1)你认为C语言有什么缺陷(你觉得哪里用的不顺手)?

  从本人近期C语言使用体验上来谈,我觉得首先C语言对于某些相对固定的功能没有进行概括封装成库函数,相对比较麻烦,例如C语言要实现排序,使用冒泡或者选择排序的话都要用双重循环来跑一遍,如果直接用库函数实现排序功能的话,可能会使代码来的更加简洁。还有就是感觉因为C语言灵活性强,自由度高,所以代码的可读性较差,对于我们初学者而言,如果码的太过随意,一不注意可能自己的代码就只有自己能看的懂了😂。

(2)简述一下C语言/C++的编译过程

  c语言编译(从源代码到二进制行程序)共经过四个步骤:a.预处理 b.编译 c.汇编 d.链接

a.预处理

  首先读取C语言源代码,将所有#include头文件以及宏定义替换成其所包含的实际文件,同时将注释去掉并进行条件编译。预处理过程实际上是在为编译做准备,将不需要的注释等文件删去,对C源码进行扩充和整理,方便在下一步转化为特定汇编代码。(通过查阅相关资料了解到在预处理后生成的文件仍为文本文件,但比预处理前的文件要大的多,由此可见头文件及宏定义,在某种意义上说,除了方便使用外还大大减少了C源代码的空间占用,节省了空间)

b.编译

  这里的编译是指将经过预处理之后的程序转换成特定汇编代码的过程。该过程会进行语法的检查,如果语法出现问题,编译就无法进行,相应编译器就会报错。

c.汇编

  汇编过程将上一步的汇编代码转换成机器码,产生目标文件,目标文件是二进制格式。机器码就是能够直接被计算机理解和接受的语言,但对于人来说不易理解。

d.链接

  链接过程将多个目标文件以及所需的库文件链接成最终的可执行文件(及形成以.exe为拓展名的文件)。链接分为静态链接和动态链接两种,静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法,而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息。

2.实践题

(1)查看自己的C++编译器版本。

a.查看Dev-C++所带gcc\g++编译器版本。
  首先快捷键win+R打开运行,输入cmd打开命令提示符,然后可通过cd指令转换到编译器的绝对路径输入gcc -v进行查看。



  或者直接将编译器的绝对路径加入到环境变量path中,再查看。(省去输入绝对路径的麻烦)




b.查看VS所带Microsoft C/C++编译器cl.exe版本。(可用VS自带命令行,已配置好环境变量可直接查看)

(2)使用命令行编译一份C语言/C++代码。

posted @ 2020-01-26 11:41  NoahQ  阅读(230)  评论(0编辑  收藏  举报