编译原理1.6习题 程序设计语言基础

这篇具有很好参考价值的文章主要介绍了编译原理1.6习题 程序设计语言基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编译原理1.6习题 程序设计语言基础,# 编译原理,编译原理,笔记

图源:文心一言

编译原理习题整理~🥝🥝

作为初学者的我,这些习题主要用于自我巩固。由于是自学,答案难免有误,非常欢迎各位小伙伴指正与讨论!👏💡

  • 第1版:自己的解题,与AI老师的判卷~🧩🧩

编辑:梅头脑🌸 

审核:文心一言

题源:龙书《编译原理》 Alfre V.Aho 等著  赵建华 等译


🧵参考答案

🧵练习1.6.1

🧵练习1.6.2

🧵练习1.6.3

🧵练习1.6.4

🔚结语


🧵参考答案

🌸乔卿博文:编译原理(龙书):第一章部分题目参考答案_编译原理龙书答案-CSDN博客

🌸fool2fish (Zhouxuan Yang) 博文:dragon-book-exercise-answers - GitCode

🧵练习1.6.1

🧩题目

对图1-13a中的块结构的C代码,指出并赋给w、x、y和z的值

int w, x, y, z;
int i = 4; int j = 5;
{
  int j = 7;
  i = 6;
  w = i + j;
}
x = i + j;
{
  int i = 8;
  y = i + j;
}
z = i + j;

🌰答题

📇阿梅答题

​int w, x, y, z;
int i = 4; int j = 5;
{
  int j = 7;    // i = 4,j = 7
  i = 6;        // i = 6,j = 7
  w = i + j;    // i = 6,j = 7,w = 13
}
x = i + j;      // i = 4,j = 5,w = 13,x = 9
{
  int i = 8;    // i = 8,j = 5,w = 13,x = 9
  y = i + j;    // i = 8,j = 5,w = 13,x = 9,y = 3
}
z = i + j;      // i = 4,j = 5,w = 13,x = 9,y = 13,z = 9

📇AI审核

AI回复简单版本:

  • 第5行 i = 6 ,修改了全局变量 i 的值为 6。

AI回复详细版本:

int w, x, y, z;  
int i = 4; int j = 5;  
{  
    int j = 7;    // i = 4, j(局部) = 7, j(全局) is hidden  
    i = 6;        // i = 6, j(局部) = 7  
    w = i + j;    // i = 6, j(局部) = 7, w = 13  
}                 // j(局部) goes out of scope, i = 6, j(全局) = 5  
x = i + j;        // i = 6, j = 5, w = 13, x = 11  
{  
    int i = 8;    // i(局部) = 8, i(全局)被隐藏, j = 5, w = 13, x = 11  
    y = i + j;    // i(局部) = 8, j = 5, w = 13, x = 11, y = 13  
}                 // i(局部) goes out of scope, i(全局) = 6, j = 5  
z = i + j;        // i = 6, j = 5, w = 13, x = 11, y = 13, z = 11

🧵练习1.6.2

🧩题目

对图1-13b中的块结构的C代码,指出并赋给w、x、y和z的值

int w, x, y, z;
int i = 3; int j = 4;
{
  int i = 5;
  w = i + j;
}
x = i + j;
{
  int j = 6;
  i = 7;
  y = i + j;
}
z = i + j;

🌰答题

📇阿梅答题

int w, x, y, z;
int i = 3; int j = 4;
{
  int i = 5;    // i = 5(局部),j = 4(全局)
  w = i + j;    // i = 5(局部),j = 4(全局),w = 9
}
x = i + j;      // i = 3(全局),j = 4(全局),w = 9 ,x = 7
{
  int j = 6;    // i = 3(全局),j = 6(局部),w = 9 ,x = 7
  i = 7;        // i = 7(全局),j = 6(局部),w = 9 ,x = 7
  y = i + j;    // i = 7(全局),j = 6(局部),w = 9 ,x = 7,y = 13
}
z = i + j;      // i = 7(全局),j = 4(全局),w = 9 ,x = 7,y = 13,z = 11

🧵练习1.6.3

🧩题目

对于图中的块结构代码,假设使用常见的声明的静态作用域规则,给出其中12个声明中的每一个练习域。

编译原理1.6习题 程序设计语言基础,# 编译原理,编译原理,笔记

🌰答题

📇阿梅答题

声明域 w x y z
B1 B1-B3-B4 B1-B2-B3-B4 B1-B5 B1-B2-B5
B2 B2-B3 B2
B3 B3 B3
B4 B4 B4
B5 B5 B5

📇参考答案

第2行,块B2重新声明了x,也就是B2的值可以包含到B3,但是B1的值在B2已经被重新声明,因此B1只能作用到B2,无法在B3生效。

声明域 w x y z
B1 B1-B3-B4 B1-B2-B4 B1-B5 B1-B2-B5
B2 B2-B3 B2
B3 B3 B3
B4 B4 B4
B5 B5 B5

🧵练习1.6.4

🧩题目

#define a (x + 1)
int x = 2;
void b() { x = a; printf("%d\n", x); }
void c() { int x = 1; printf("%d\n", a); }
void main () { b(); c(); }

🌰答题

📇阿梅答题

#define a (x + 1)
int x = 2;
void b() { x = a; printf("%d\n", x); }        // a = x + 1,即a = 2; x = a(全局), 即 x = 3,输出3
void c() { int x = 1; printf("%d\n", a); }    // a = x + 1, x = 1,即a = 2(局部),输出2
void main () { b(); c(); }

综上,输出3,2


🔚结语

博文到此结束,写得模糊或者有误之处,欢迎小伙伴留言讨论与批评,督促博主优化内容{例如有错误、难理解、不简洁、缺功能}等,博主会顶锅前来修改~~😶‍🌫️😶‍🌫️

我是梅头脑,本片博文若有帮助,欢迎小伙伴动动可爱的小手默默给个赞支持一下,感谢点赞小伙伴对于博主的支持~~🌟🌟

同系列的博文:🌸编译原理_梅头脑_的博客-CSDN博客

同博主的博文:🌸随笔03 笔记整理-CSDN博客文章来源地址https://www.toymoban.com/news/detail-804444.html

到了这里,关于编译原理1.6习题 程序设计语言基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《MySQL数据库原理、设计与应用》课后习题及答案 黑马程序员编著

    答案有文档形式,但是csdn必须要下载,,需要的人就去那里下载吧。《MySQL数据库原理、设计与应用》课后习题及答案黑马程序员编著 一、 填空题 1.关系型数据库的标准语言是_ SQL _。 2.数据库发展的3个阶段中,数据独立性最高的是_ 数据库系统 _阶段。 3.概念模型中的3种基

    2024年02月03日
    浏览(24)
  • 【编译原理实验】 -- 词法分析程序设计原理与实现(C语言实现)

    目录 目标任务 设计要求 一、程序功能描述 二、正则文法 三、程序结构描述 四、代码  五、程序测试  测试用例1 测试结果1 测试用例2 测试结果2 以下为正则文法所描述的 C 语言子集单词符号的示例,请补充单词符号:++,--, , , += , -= ,*=, /= ,(逻辑与),||(逻辑或),

    2024年02月02日
    浏览(33)
  • 【软件设计师07】程序设计语言与语言处理程序基础

    编译与解释、文法、正规式、有限自动机、表达式、传值与传址、多中程序语言特点 (逐渐降低考察比例,很少考察) 概念 文法类型 语法推导树 有限自动机 与正规式(重点) 常见问题:给一个串比如01、10、001等,看图中起点到终点能否连起来得到这样的串 正规式 是有限自

    2023年04月08日
    浏览(20)
  • Rust 程序设计语言学习——基础语法

    Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。 Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月。Rust 的编译器是在 MIT License 和 Apache License 2.0 双重协议声明下的免费开源软

    2024年01月22日
    浏览(22)
  • 汇编语言程序设计——基础知识(完整)

    CPU是计算机的核心部件,一个基础的CPU由运算器、控制器、寄存器等器件相连,这些器件靠内部总线相连, CPU通过内部总线与内部各个器件进行联系,例如读取内存中的程序;CPU通过外部总线实现与主板上的其他器件的联系,例如我们使用的蓝桥杯单片机开发板上就存在着矩

    2024年02月19日
    浏览(19)
  • [编译原理]DO-WHILE循环语句的翻译程序设计(LR(1)方法、输出四元式)C++实现

    初始条件: ​ 理论:完成编译原理,数据结构、高级编程语言、汇编语言等相关课程的学习,基于计算机专业知识进行课程设计。 ​ 实践:计算机实验室提供计算机及软件环境。如果自己有计算机及环境也可以在其上进行设计任务。 要求完成的主要任务: (包括课程设计工

    2024年02月03日
    浏览(20)
  • 嵌入式:ARM汇编语言程序设计基础教程

    ① 合理地分配存储器资源,将前述的目标系统‘数据结构模型’表示到各存储器单元。 ② CPU寄存器数量有限,在程序中,大多数操作都要使用寄存器;并且有的操作使用特定的寄存器(如堆栈操作使用SP/R13等),程序中要合理分配各寄存器的用途。 用计算机语言,对数据结

    2023年04月23日
    浏览(59)
  • 软考:中级软件设计师:程序语言基础:表达式,标准分类,法律法规,程序语言特点,函数传值传址

    提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 (1)自己的科研经历, 科研内容 ,学习的相关领域知识,要熟悉熟透了 (2)自己的实习经历,做了 什

    2024年02月09日
    浏览(29)
  • [ XJTUSE ]JAVA语言基础知识——第一章 面向对象程序设计思想

    类描述了一组有相同 特性 (属性)和相同 行为 (方法)的对象,类和对象是面向对象思想的两个核心概念 · 人类是一种类,每一个具体的人则是这个类的对象 用面向对象程序来模拟真实世界 发现并创建类 发现类的特征 发现类的行为 在面向对象程序中,对象的特征由各种

    2023年04月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包