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

一、堂上限时训练
1、 编写函数计算阶乘*
下面程序实现由键盘读入整数n,计算并输出n!,请补充完整计算阶乘的函数。

include "stdio.h" 
__________            
main() 
{    
	int n; 
    scanf("%d", &n); 
    printf("%ld", fanc(n)); 
} 
输入样例
3
输出样例
6
#include "stdio.h"
int fanc(int x)
{
    int i,s=1;
    for(i=1;i<=x;i++)
    {
        s=s*i;
    }
    return s;
}
main()
{
	int n;
    scanf("%d", &n);
    printf("%ld", fanc(n));
    return 0;
}

2、函数中的变量
写出下面程序的运行结果:

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

程序到此结束 请用下面程序输出你的答案(注意转义字符的正确表达)
#include “stdio.h”
main()
{
printf("_______________________");
}

注意:
static 用来说明静态变量。
1、如果是在函数外面定义的,那么其效果和全局变量类似,即static说明的变量可以在当前c程序文件中使用。
2、如果是在函数内部定义的,那么这个变量只初始化一次,即使再次调用这个函数,这个static变量也不会再次被初始化,于是,这个变量的取值就会一直保存着,我们再次调用该函数时,仍是保存的上一次函数调用时保存的结果。

思路:
k=0;a=1;x=1;y=1;z=4;(x+y+z)=1+1+4=6;
k=1;a=1;x=1;y=2;z=5;(x+y+z)=1+2+5=8;
k=2;a=1;x=1;y=3;z=6;(x+y+z)=1+3+6=10;

答案:
printf(" 6 8 10");
(空格空格空格6空格空格空格8空格空格10)

3、[填空题]十进制数转二进制数
下面程序,实现由键盘输入一个正整数(不大于100000000),输出其对应的二进制数(原码表示)。
#include “stdio.h”


main()
{
int n;
scanf("%d", &n);
binary(n);
}
输入样例
12
输出样例
1100

思路:10进制转2进制是先把10进制不断除2后的每次得到的余数,再把这些余数倒叙显示。

#include "stdio.h"
int binary(int x)
{
    if(x>1)
    {
        binary(x/2);//嵌套递归
    }
    printf("%d",x%2);//递归后从后往前层层返回值
}
main()
{
    int n;
    scanf("%d", &n);
    binary(n);
}
发布了10 篇原创文章 · 获赞 1 · 访问量 190

猜你喜欢

转载自blog.csdn.net/weixin_39475542/article/details/105026202