函数的参数函数的参数
参数 作用
简单变量 值传递
单个数组元素 值传递
数组名 地址传递
//参数为简单变量
//在调试窗口中查看主函数、子函数中变量的地址
#include
void main()
{ int mm(int w); //函数说明
int w;
w=100;
printf("主函数内: &w=%x\n",&w);
printf("调用函数前,w=%d\n\n\n",w);
mm(w);
printf("调用函数后,w=%d\n",w); }
int mm( int w )
{
pr...
函数的参数
参数 作用
简单变量 值传递
单个数组元素 值传递
数组名 地址传递
//参数为简单变量
//在调试窗口中查看主函数、子函数中变量的地址
#include
void main()
{ int mm(int w); //函数说明
int w;
w=100;
printf("主函数内: &w=%x\n",&w);
printf("调用函数前,w=%d\n\n\n",w);
mm(w);
printf("调用函数后,w=%d\n",w); }
int mm( int w )
{
printf("子函数内: &w=%x\n\n",&w);
w=2000;
return 0;
}
//参数是单个数组元素
//在调试窗口中查看主函数、子函数中变量的地址
#include
void main()
{ int mm( int ); //函数说明
int i;
int a[10]={0,1,2,3,4,5,6,7,8,9};
printf("调用函数前\n");
for (i=0;i<=9;i++)
{ printf("%d ", a[i]);
}
printf("\n");
//printf("主函数内,a[5]的地址:&a[5]=%x\n",&a[5]);
mm(a[5]);//传递第5号元素
printf("调用函数后\n");
for (i=0;i<=9;i++)
{ printf("%d ", a[i]);
}
printf("\n");
}
int mm(int w)
{
//printf("子函数内: &w=%x\n",&w);
w=2000;
return 0;
}
//参数是数组名
//在调试窗口中查看主函数、子函数中数组的地址
#include
void main()
{ int mm( int c[]);
//函数说明,请注意:参数形式和前面已经不一样了。
int i;
int a[100];
for (i=1;i<=10;i++)
{ a[i]=1;
}
printf("&a[0]=%x\n",&a[0]);
printf("调用函数前\n");
for (i=0;i<=9;i++)
{ printf("%d\n", a[i]);
}
mm(a);//写成m(a[10]),如何,
printf("调用函数后\n");
for (i=0;i<=9;i++)
{ printf("%d\n", a[i]);
}
}
int mm( int c[] )
{ int i;
for(i=0;i<=10;i++)
c[i]=100;
printf("&c[0]=%x\n",&c[0]);
return 0;
}
//注意a[0]、c[0]的地址有何区别,
参数是简单变量、数组元素 参数是数组名
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] 100 a c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8] w
w c 2000
P202:n阶勒让德多项式,递归算法。
1 n=0
p(x)= x n=1 n
((2n-1)?x-p(x)-(n-1)*p(x))/n n>1 n-1n-2
n!=(n-1)!×n
fact=fact*n nn-1
fact(n)=fact(n-1)*n
习题:
1、 输入两个人的出生年月日,计算他们之间的年龄的天数差
额。
如,输入
A的生日:1980 1 1
B的生日:1981 1 1
显示
A的生日是:星期一。
B的生日是:星期三。
A比B大366天。
要求:
a) 程序好看
b) 算法优化
c) 能处理非法数据
d) 多用函数
用什么方法来检验你的结果是否正确,
sum
n
m
天数 = sum - m + n 2007.6.1 1980.9.1
算法:
(1) 用全局数组days[13]存贮每月的天数
0 31 28 31 30 31 30 31 31 30 31 30 31
(2) 函数一:识别输入日期的是否正确 (3) 函数二:判断是否闰年
a) 闰年=1
b) 平年=0
(4) 函数三:计算sum值。
(5) 函数四:计算m、n值。
2、 在某个项目中,会在不同的函数内不断用到1!、2!、3!、
4!、…29!、30!等阶乘数据,由于项目要求速度尽可能的快,
因此,如何在最短时间内得到阶乘成为关键。要求:编写一
个函数应用递归算法计算阶乘。提示:使用全局变量。(文件
名:0514_2.CPP)
算法:
, 用数组(全局变量)来存取阶乘
jc[100]
0 0 0 0 0 0 0 0 0 0 0 0 0
初始化所有元素值为0。0示未计算,非0表示已计算。 例:
第1次求7~:jc[7]=0, 说明7!从未计算过,计算7!=5040,
jc[7]=5040。
第2次求7~:jc[7]=5040,说明7!已计算过, 不需要再计
算,7!=5040。
第3次求6!:jc[6]=0, 说明6!从未计算过,计算6!=720,
jc[6]=720。
第4次求6~:jc[6]=720, 说明6!已计算过, 不需要再计
算,6!=720。
, 优化:
在计算7!时,其实6!的阶乘已计算出来,只需要jc[6]=720,在第3次求6!时,就不需要再计算了。
, 进一步优化:
在计算7!时,其实1!、2!、3!、4!、5!、6!的阶乘已计算出来,只需要jc[1]=1、jc[2]=2、jc[3]=6、jc[4]=24、jc[5]=120、jc[6]=720,在第3次求6!时,就不需要再计算了。同样,再求1!、2!、3!、4!、5!时也不需要再计算。
本文档为【函数的参数】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。