第一范文网 - 专业文章范例文档资料分享平台

C语言程序设计及实验指导练习及习题参考答案(8--10)

来源:用户分享 时间:2025/5/30 11:59:39 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

6.下列语句的运算结果为_7,-13____。 #define F(x) x - 2 #define D(x) x * F(x)

printf(\三、程序设计题

1.编写一个函数,利用参数传入一个3 位数n,找出101~n 间所有满足下列两个条件的数: 它是完全平方数,又有两位数字相同,如144、676 等,函数返回找出这样的数据的个数。 请同时编写主函数。 解答:

#include #include int fun(int n); int main(void) { int n;

printf(\scanf(\

printf(\return 0; }

int fun(int n) {

int i, d=0;

for(i=101; i<=n; i++)

if(((int)sqrt(i) * (int)sqrt(i)) == i) {

if (i/100==(i/10)|| i/100==i||(i/10)==i) d++; }

return d; }

2.用递归的方法对下列计算式子编写一个函数。 f(x , n) = x - x2 + x3 - x4 + … + (-1) n-1x n (n>0) 并写出相应主函数。 解答:

#include #include

double f(double x, int n) {

if(n==1) return x;

return pow(-1,n-1)*pow(x,n)+f(x, n-1); }

int main(void) { int n;

double x;

printf(\scanf(\printf(\return 0; }

3.计算Ackermenn 函数ack(m,n),其定义如下: n + 1 m=0

ack(m, n)= ack(m - 1, 1) n=0 && m>0 ack(m - 1, ack(m, n - 1) ) m>0 && n>0 解答:

#include int Ack(int m, int n); int main(void) {

int m,n; int result;

scanf(\result = Ack(m,n);

printf(\}

int Ack(int m, int n) {

if (m==0) return n+1;

else if (n==0) return Ack(m-1, 1); else return Ack(m-1, Ack(m, n-1)); }

4.用递归方法编写求斐波那契数列的函数,函数类型为整型,并写出相应主函数。斐波那 契数列的定义如下。

f(n) = f(n - 2) + f(n - 1) (n>1) 其中 f(0) = 0,f(1) = 1。 解答:

#include long fib(int n); int main(void) { int n;

scanf(\

printf(\}

long fib(int n) {

long res; if(n==0)

res=0;

else if(n==1) res=1; else

res=fib(n-2)+fib(n-1); return res; }

5.编写实现对一个整数进行按位顺序输出的递归函数。 解答:

#include int inorder(int n); int main(void) { int n;

scanf(\

printf(\}

int inorder (int num) {

if(num<10) return num; else

return(inorder (num/10)*10+ num); }

6.编写实现对一个整数进行逆序处理的递归函数,函数需要有返回值,其值为逆序后的数 据。 解答:

#include \#include \int rev(int n); int x=1;

int main(void) {

int n, t=1;

scanf(\

printf(\return 0; }

int rev(int n) {

static int p; int y; if (n<10) p = 1, y = n;

else {

y = rev(n / 10); p *= 10;

y = y + (n % 10) * p; }

return y; }

7.三角形面积为: area =

s?(s ??a)?(s ?b)?(s ??c)

其中,s = (a + b + c) / 2。a、b、c 分别是三角形的3 条边。请分别定义计算s 和area 的宏。 再使用函数实现,比较两者在形式上和使用上的区别。 解答:

(1) 使用宏实现 #include #include

#define S(a ,b, c) ((a)+(b)+(c))/2

#define AREA(s,a,b,c) sqrt((s)*((s)-(a))*((s)-(b))*((s)-(c))) int main(void) {

double a, b, c, s;

printf(\

scanf(\s = S(a,b,c);

printf(\return 0; }

(2) 使用函数实现 #include #include

double f1(double a, double b, double c) {

return (a+b+c)/2; }

double f2(double s, double a, double b, double c) {

return sqrt(s*(s-a)*(s-b)*(s-c)); }

int main(void) {

double a, b, c, s;

printf(\

scanf(\s = f1(a,b,c);

C语言程序设计及实验指导练习及习题参考答案(8--10).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6zb3q5xf6l7l7tx2asjh_11.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top