zoukankan      html  css  js  c++  java
  • 面向对象程序设计寒假作业1解题

    这个作业属于哪个课程 2020面向对象程序(福州大学-数学与计算机科学学院)
    这个作业要求在哪里 面向对象程序设计寒假作业1
    这个作业的目标 1.安装C++开发环境(见附录)。2.完成问答题、实践题及编程题(不要求把代码全部写出来但是要体现思路)。3.发布博客(内容要体现自己的思考过程)
    作业正文 面向对象程序设计寒假作业1
    其他参考文献 C语言真正的编译过程

    问答题:
    1.C语言的语法限制不太严格,对变量的类型约束不严格,我写代码的时候我发现就是类型不同是也会正常运行,影响程序的安全性。对数组下标越界不作检查,我发现我在写代码的时候如果数组越界了编译时也不会提醒。
    2.C语言的编译过程:(我是通过上网查找资料了解到的)
    【第一步】编辑hello.c

    【第二步】预处理

    预处理过程实质上是处理“#”,将#include包含的头文件直接拷贝到hell.c当中;将#define定义的宏进行替换,同时将代码中没用的注释部分删除等

    具体做的事儿如下:

    (1)将所有的#define删除,并且展开所有的宏定义。说白了就是字符替换

    (2)处理所有的条件编译指令,#ifdef #ifndef #endif等,就是带#的那些

    (3)处理#include,将#include指向的文件插入到该行处

    (4)删除所有注释

    (5)添加行号和文件标示,这样的在调试和编译出错的时候才知道是是哪个文件的哪一行

    (6)保留#pragma编译器指令,因为编译器需要使用它们。
    【第三步】编译

    编译的过程实质上是把高级语言翻译成机器语言的过程,即对a.c做了这些事儿

    (1)词法分析,

    (2)语法分析

    (3)语义分析

    (4)优化后生成相应的汇编代码

    从 高级语言->汇编语言->机器语言(二进制)
    第四步】链接

    就像刚才的hello.c它使用到了C标准库的东西“printf”,但是编译过程只是把源文件翻译成二进制而已,这个二进制还不能直接执行,这个时候就需要做一个动作,

    将翻译成的二进制与需要用到库绑定在一块。

    实践题的话,我把软件下了好多次都不行没办法了,只能等我把软件下好再看看怎么做了。

    编程题:
    题目的要求是输入文字,然后也能按照文字的要求进行编译运行。
    编程要求
    编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。
    变量定义:整数 钱包 等于 零
    运算(加法):钱包 增加 四
    运算(减法):钱包 减少 四
    输出:看看 钱包

    样例
    输入:

    整数 钱包 等于 零
    钱包 增加 四
    钱包 减少 三
    看看 钱包

    输出:

    注意:
    1.输入输出用例均为GBK编码,推荐使用vscode把文本切换为GBK编码。
    2.数字只会出现以下 零一二三四五六七八九十 。
    对于这题编程体我的主要思路是先把文字转化为数字,让文字变成简单的东西,因为计算机在运行时不能直接识别文字。这个题目看起来其实就是简单的加减法,但是怎么样把题目要求的真正体现出来才是关键难点,要让计算机知道到底是要加还是减,加多少减多少。那如果把关键文字转变为数字和符号就可以直接解决这个问题了。

    这些就是我大概的思路了(技术差见谅啊)

  • 相关阅读:
    三数之和
    167
    二分搜索树
    687
    索引堆
    二分查找 leetcode704
    leetcode 56合并区间 java
    leetcode 1046
    堆的数据结构java
    leetcode 493
  • 原文地址:https://www.cnblogs.com/liao0/p/12235937.html
Copyright © 2011-2022 走看看