云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C语言程序设计及实验指导练习及习题参考答案(8--10)

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

  • 62 次阅读
  • 3 次下载
  • 2025/12/10 5:26:49

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);

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

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

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com