2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > SCAU高级语言程序设计--实验9 函数的应用(1)

SCAU高级语言程序设计--实验9 函数的应用(1)

时间:2022-09-30 04:48:23

相关推荐

SCAU高级语言程序设计--实验9 函数的应用(1)

SCAU高级语言程序设计--实验9 函数的应用(1)

一、堂上限时习题

1、编写函数计算阶乘

题目:下面程序实现由键盘读入整数n,计算并输出n!,请补充完整计算阶乘的函数。

#include"stdio.h"

_______________________

main()

{intn;

scanf("%d",&n);

printf("%ld",fanc(n));

}

思路:直接把整个阶乘的计算方法,卸载函数里面。需要用的时候就直接用函数名调用。这里注意函数的返回数据类型为long。

#include<stdio.h>long fanc(int n){long i,r=1;for (i=1;i<=n;i++)r *= i;return r;}int main(){int n;scanf("%d",&n);printf("%ld",fanc(n));return 0;}

2、函数的变量

题目:写出下面程序的运行结果:

int f1(int x){ static int z=3,y=0;y++;z++;return(x+y+z);}main(){ int a=1,k;for(k=0;k<3;k++) printf("%4d",f1(a));}

程序到此结束 请用下面程序输出你的答案(注意转义字符的正确表达)

#include"stdio.h"

main()

{

printf("_______________________");

}

结果为:6 8 10

int f1(int x){ static int z=3,y=0;//静态局部变量y++;z++;return(x+y+z);}main(){ int a=1,k;for(k=0;k<3;k++) printf("%4d",f1(a));}

分析:第一次计算:k=0,a=1;函数计算后,y=1,z=4,f1(1)=1+1+4=6

第二次计算:k=1,a=1;函数计算后,y=2,z=5,f1(1)=1+2+5=8

第三次计算:k=2,a=1;函数计算后,y=3,z=6,f1(1)=1+3+6=10

注意:static定义过的变量为静态局部变量,函数结束后,变量的数值依旧会保留下来,再次调用的时候会继续参与计算,直到整个程序结束。(可参考书本P102-105局部变量和全局变量)

3、编写函数,实现十进制数转二进制数

题目:下面程序,实现由键盘输入一个正整数(不大于100000000),输出其对应的二进制数(原码表示)。 请填空:

#include"stdio.h"

_______________________

main()

{

intn;

scanf("%d",&n);

binary(n);

}

思路:这里运用了一个函数嵌套。由于10进制转2进制是先把10进制不断除2后的每次得到的余数,再把这些余数倒叙显示。嵌套有点难想,可以自己用笔算算。

分析:b(10)<-b(5)<-b(2)<-b(1),显示顺序就是1->0->1->0

#include<stdio.h>void binary(n)(int n){if (n>1)binary(n/2);//嵌套函数printf("%d",n%2);}int main(){int n;scanf("%d",&n);binary(n);//函数调用return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。