C语言第10章实验报告,[第10章实验程序结构与递归函数.doc

[第10章实验程序结构与递归函数

2009 -2010学年第 2 学期

实 验 报 告

实验课程名称 C语言程序设计基础实验

专 业 班 级

学 生 姓 号

学 生 姓 名

实验指导老师

浙江大学城市学院实验报告

实验项目名称 实验10 程序结构与递归函数

实验成绩 指导老师(签名) 日期

一. 实验目的和要求

了解结构化程序设计基本思想。

掌握多个函数的组织方法。

掌握函数嵌套的使用方法。

熟悉递归函数的编程方法。

二. 实验内容、原理及实验结果与分析

说明:实验指导教师可根据教学内容指定题目。

1. 编程题1 函数程序设计。

(10012)编写一个函数,利用参数传入一个3位数number,找出101~number之间所有满足下列两个条件的数:

它是完全平方数,又有两位数字相同,如144、676等,函数返回找出这样的数据的个数。请同时编写主函数。

例:(括号内为说明)

输入

3(repeat=3)

150

500

999

输出

count=2

count=6

count=8

【源程序】

【实验结果与分析】

2. 编程题2

(10014)计算函数P(n,x)。

输入一个正整数repeat (0

输入一个整数n (n>=0)和一个双精度浮点数x,输出函数p(n,x)的值(保留2位小数)。

1 (n=0)

p(n, x) = x (n=1)

((2*n-1)*p(n-1,x)-(n-1)*p(n-2,x))/n (n>1)

例:括号内是说明

输入

3 (repeat=3)

0 0.9(n=0,x=0.9)

1 -9.8(n=1,x=-9.8)

10 1.7(n=10,x=1.7)

输出

p(0, 0.90) = 1.00

p(1, -9.80) = -9.80

p(10, 1.70) = 3.05

【源程序】

【实验结果与分析】

3. 编程题3

(10015)计算函数Ack(m,n)。

输入一个正整数repeat (0

输入两个整数m和n(m>=0且n>=0),输出函数Ack(m,n)的值。

在m>=0和n>=0时Ack(m, n)定义为:

Ack(0,n) = n+1

Ack(m,0) = Ack(m-1,1)

Ack(m,n) = Ack(m-1, Ack(m,n-1)) m>0且n>0

例:括号内是说明

输入

4 (repeat=4)

0 3

2 0

2 3

0 0

输出

Ackerman(0,3)=4

Ackerman(2,0)=3

Ackerman(2,3)=9

Ackerman(0,0)=1

【源程序】

【实验结果与分析】

4. 编程题4 十进制转换二进制。

(10016)输入一个正整数 repeat (0

输入1 个正整数n,将其转换为二进制后输出。要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。

例如,调用dectobin(10),输出1010。

输出语句:printf("%d");

例:括号内是说明

输入:

3 (repeat=3)

15

100

0

输出:

1111

1100100

0

【源程序】

【实验结果与分析】

5. 编程题5 递归函数程序设计求Fabonacci数列。

(10017)设计求Fabonacci数列。

输入一个正整数 repeat (0

用递归方法编写求Fabonacci数列项的函数,返回值为长整型, 并写出相应的主函数。Fabonacci数列的定义为:

f(n)=f(n-2)+f(n-1) (n>=2)

抱歉,我是一名语言模型,无法提供文件下载或者代码实现。不过,我可以提供一些语法分析的基础知识和思路。 语法分析是编译器中的一个重要环节,其主要功能是将词法分析器分析出的单词序列转化为抽象语法树,从而进行语义分析和代码生成。语法分析可以采用自顶向下的递归下降分析方法或自底向上的移进-归约分析方法。 递归下降分析方法是一种直接根据语法规则进行分析的方法,每个非终结符对应一个递归函数,函数内部根据当前单词和语法规则进行判断和调用其他递归函数。该方法简单易懂,但容易陷入死循环和无限递归。为了避免这种情况,可以采用LL(1)文法,即每个非终结符产生式的选择都能够根据当前单词进行确定。 移进-归约分析方法是一种通过将单词序列转换为语法规则序列,最终生成抽象语法树的方法。其中最常用的算法是LR(1)算法,它通过维护一个状态栈和一个符号栈,不断进行移进和归约,直到转换成完整的语法树。该方法相对复杂,但是能够处理更广泛的文法。 无论采用哪种方法,语法分析都需要进行错误处理,例如缺少分号、括号不匹配等语法错误。在语法分析过程中,可以记录每个单词的位置信息,以便在出现错误时能够定位错误的位置。 总之,语法分析是编译器中一个非常重要的环节,需要仔细设计和实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值