您的位置:首页 > 编程语言 > C语言/C++

win环境下c语言05

2014-03-04 20:55 183 查看
函数的调用有两个很重要的形式,一个是嵌套调用,一个是递归调用:
函数的嵌套调用时,一个函数调用另一个函数,另一个函数又调用另一个函数,最后求出结果;函数的递归调用就是函数自己调用自己,但是这个函数最后必须要有一个停止递归调用的条件,不然函数递归调用就会无限制的调用下去——死循环;
函数的参数有实参和形参,见名知意,实参是参量,形参是变量。形参出现在函数声明和函数定义部分,而实参定义在函数的调用部分,并用“值传递”的方法传递给函数;形参可以使int 、float等基本数据类型,也可以是数组(构造类型数据),在调用的时候传递的不是值,而是地址,这个和将来要学习的指针变量类似,就是说函数参数也可以用指针变量表示,用传送地址的方法进行函数调用,被调用函数中变量值的变化可以传到main函数或者其他主调用函数体重。
练习程序:
1.有一只猴子在了很多水果,第一天吃了所有的一半+1个水果,第二天也是吃了一半+1个水果,到了第十天要吃的是,只剩下1个水果,算出共摘了多少水果,就是以第一天吃之前有多少水果;
源代码如下:

#include <stdio.h>
int main ()
{

int fruit (int days);
int days;

for(days=1;days<11;days++)//输入这十天,每天的水果库存量
{
printf("第%d天没有吃之前,还有%d个水果。\n",days,fruit(days));
}
printf("小猴子共摘了%d水果.\n",fruit(1));
return 0;
}

//定义循环调用函数 fruit,计算days当天没有吃之前还有多少水果
int fruit(int days)
{
int sum;
if(days==10)
sum=1;
else if(days>=0)
sum=2*fruit(days+1)+2;
return sum;
}

运行结果:



2.输入一个数,打印多少个星形长度的棱形
源代码:
#include <stdio.h>
int main()
{
int length;
int printfstart1(int length1);
int printfstart2(int length2);
scanf("%d",&length);//输入星行形的边长有几个星
printfstart1(length);
printfstart2(length);
return 0;

}

//正向输入星号
int printfstart1(int length1)
{
int i,j;
for(i=1;i<=length1;i++)//打印几行星号
{
for(int k=1;k<=2*(length1-i);k++)//输出空格
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)//每行输出多少个星号
{
printf("* ");//每个星号后面都空一格

}
printf("\n");//每行结束换行
}

return 0;
}

//反向输出星号+(length1-1)
int printfstart2(int length2)
{
int i,j;
for(i=1;i<length2;i++)
{
for(int k=1;k<=2*i;k++)
{
printf(" ");
}
for(j=1;j<=2*(length2-i)-1;j++)
{
printf("* ");

}
printf("\n");
}

return 0;
}
输出结果:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  windows c语言学习