win环境下c语言05

函数的调用有两个很重要的形式,一个是嵌套调用,一个是递归调用:

   函数的嵌套调用时,一个函数调用另一个函数,另一个函数又调用另一个函数,最后求出结果;函数的递归调用就是函数自己调用自己,但是这个函数最后必须要有一个停止递归调用的条件,不然函数递归调用就会无限制的调用下去――死循环;

函数的参数有实参和形参,见名知意,实参是参量,形参是变量。形参出现在函数声明和函数定义部分,而实参定义在函数的调用部分,并用“值传递”的方法传递给函数;形参可以使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;

}


运行结果:

wKioL1MVzW2zyCTJAAF5-Uup67A805.jpg

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;

}

输出结果:

wKiom1MV5eaT0TKaAAFs3P_uTbw197.jpg


你可能感兴趣的:(windows,C语言学习)