• 回文 马蹄集


     回文
    难度:白银
    0时间限制:1秒
    巴占用内存:64M
    输入正整数N,判断N的各位数字之和是否为回文数。(注:回文数是一个在反转
    时保持不变的数。比如121,7等。)不考虑不合理的输入等特殊情况。
    格式
    输入格式:输入正整数N
    输出格式:输出YES或者NO

    1. //
    2. // Created by abner on 2022/11/11.
    3. //
    4. #include
    5. using namespace std;
    6. int main(){
    7. string a;
    8. cin >>a;
    9. int ans = 0;
    10. for (int i=0;ilength();i++)
    11. ans = ans + a[i]-'0';
    12. int temp = ans,newans = 0;
    13. while(temp){
    14. newans = newans * 10 + temp % 10;
    15. temp = temp / 10;
    16. }
    17. if(newans == ans) printf("YES\n");
    18. else printf("NO\n");
    19. return 0;
    20. }

    编译原理

    第一章 引言

    1.从面向机器的语言到面向人类的语言

    汇编指令:用符号表示的指令被称为汇编指令
    汇编语言:汇编指令的集合称为汇编语言

    2.语言之间的翻译

    转换(也被称为预处理):高级语言之间的翻译,如FORTRANADA的转换
    编译:高级语言可以直接翻译成机器语言,也可以翻译成汇编语言,这两个翻译过程称为编译
    汇编:从汇编语言到机器语言的翻译被称为汇编
    交叉汇编:将一个汇编语言程序汇编成为可在另一机器上运行的机器指令成为交叉汇编
    反汇编:把机器语言翻译成汇编语言
    反编译:把汇编语言翻译成高级语言

    正在上传…重新上传取消

    3. 编译器与解释器

    (1)语言翻译的两种基本形态

    正在上传…重新上传取消

    解释器与编译器的主要区别:运行目标程序时的控制权在解释器而不在目标程序.

    (2)各自特点

    • 编译器:工作效率高,即时间快、空间省;交互性与动态性差,可移植性差.
    • 解释器:工作效率低,,即时间慢、空间费;交互性与动态性好,可移植性好.

    共同点:均完成对源程序的翻译.
    差异:编译器采用先翻译后执行,解释器采用边翻译边执行.

    4. 编译器的工作原理与基本组成

    (0)通用程序设计语言的主要成份 声明+操作=完整定义

    (1)以过程为基本结构的程序设计语言的组成

    • 声明性语句:提供操作对象的性质,如数据类型、值、作用域等;
    • 操作性语句:确定操作的计算次序,完成实际操作。
    • 过程定义 = 过程头+过程体

    (2)以阶段划分编译器

    正在上传…重新上传取消

    注:符号表管理器和出错处理贯穿编译器工作的各个阶段.

    (3)编译器各阶段工作

    1> 词法分析:词法分析的输入源程序,输出是识别出的记号流.目的识别单词. 至少分以下几类:关键字(保留字)、标识符、字面量、特殊符号

    2> 语法分析: 输入是词法分析器返回的记号流,输出语法树.目的是得到语言结构并以树的形式表示.对于声明性语句,进行符号表的查填,对于可执行语句,检查结构合理的表达式运算是否有意义.

    3> 语义分析:根据语义规则对语法树中的语法单元进行静态语义检查,如类型检查和转换等,目的在于保证语法正确的结构在语义分析上也是合法的.

    4> 中间代码生成(可选):生成一种既接近目标语言,又与具体机器无关的表示,便于代码优化与代码生成.

    (到目前为止,编译器与解释器可以一致)

    5> 中间代码优化(可选):局部优化、循环优化、全局优化等;优化实际上是一个等价变换,变换前后的指令序列完成同样的功能,但在占用的空间上和程序执行的时间上都更省、更有效

    6> 目标代码生成:不同形式的目标代码—汇编语言形式、可重定位二进制代码形式、内存形式(Load-and-Go)

    7> 符号表管理:合理组织符号,便于各阶段查找\填写等.

    8> 出错处理:

    1. 动态错误:源程序中的逻辑错误,发生在程序运行的时候。也称为动态语义错误
    2. 静态错误:静态错误分为语法错误和静态语义错误.
    3. <1> 语法错误:有关语言结构上的错误,如单词拼写错误、表达式缺少操作数、begin和end不匹配
    4. <2> 静态语义错误:分析源程序时可以发现的语言意义上的错误,如加法的两个操作数一个是整形变量,另一个是



    作者:SnorlaxSE
    链接:https://www.jianshu.com/p/eb63d31ad638/
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 相关阅读:
    《深入理解JAVA虚拟机(第2版)》—— 学习笔记2
    超千万下载量的NPM包遭黑客攻击,美国监管机构紧急警告
    Openharmony轻量系统实验--GPIO点灯
    linux安装python3.X
    解密prompt系列40. LLM推理scaling Law
    【无标题】登临麦积山
    ESP8266-Arduino编程实例-APDS-9930环境光和趋近感器驱动
    C++异常
    等级测评是什么意思?工作流程包含哪些?
    科技前沿:Web3与物联网的智能连接
  • 原文地址:https://blog.csdn.net/m0_62574889/article/details/127810862