C语言程序设计教程第五章数组

发布时间 : 星期一 文章C语言程序设计教程第五章数组更新完毕开始阅读

C语言程序设计教程 高等教育出版社第二版 第五章 数组

【例】:使数组元素a[0]~a[9]的值为0~9,然后逆序输出。 main()

{ int i,a[10];

for (i=0;i<=9;i++) a[i] = i;

for(i=9;i>=0; i--) printf(\}

运行输出:9 8 7 6 5 4 3 2 1 0 注意:

⑴下标可用整常数或整型表达式,其起始值为0。

⑵在引用时应注意下标的值不要超过数组的范围。C编译不检查下标是否超界,即不指出“下标超界”的错误。

5.1.4 数组作为函数参数

1、数组元素用作函数实参,其用法与普通变量完全相同:在发生函数调用时,把数组元素的值传送给形参,实现单向值传送。 【例】: 写一函数,统计字符串中字母的个数。

第 5 页 共 30 页

C语言程序设计教程 高等教育出版社第二版 第五章 数组

/*功能:数组元素作为函数实参*/

int isalp(char c)

{ if (c>='a'&&c<='z'||c>='A'&&c<='Z') return(1);

else return(0); } main()

{ int i,num=0; char str[255];

printf(\

gets(str); /*从标准设备读入字符串,并放入str指向的数组*/ for(i=0;str[i]!='\\0';i++) if (isalp(str[i])) num++;

puts(str); /*把str指向的字符串输出到标准设备*/ printf(\

getch(); /*从标准输入设备读入下一个字符*/ } 说明:

用数组元素作实参时,只要数组类型和函数的形参类型一致即可,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。

第 6 页 共 30 页

C语言程序设计教程 高等教育出版社第二版 第五章 数组

2、数组名作函数参数时,既可以作形参,也可以作实参。

数组名作函数参数时,要求形参和相对应的实参都必须是类型相同的数组(或指向数组的指针变量),都必须有明确的数组说明 【例】: 已知某个学生5门课程的成绩,求平均成绩。

float aver(float a[ ]) /*求平均值函数*/ { int i;

float av,s=a[0];

for(i=1;i<5;i++) s += a[i]; av=s/5; return av; }

main()

{ float sco[5],av; int i;

printf(\;

for(i=0;i<5;i++) scanf(\; av=aver(sco); /*调用函数,实参为数组名*/ printf(\; getch(); /*从标准输入设备读入下一个字符*/

第 7 页 共 30 页

C语言程序设计教程 高等教育出版社第二版 第五章 数组

} 说明:

⑴组名作函数参数,应该在调用函数和被调用函数中分别定义数组,且数据类型必须一致,否则结果将出错。

⑵C编译系统对形参数组长度不作检查,所以形参数组可以不指定长度。例如,本例中的形参数组a[ ]。

⑶如果指定形参数组的长度,则实参数组的长度必须大于等于形参数组,否则因形参数组的部分元素没有确定值而导致计算结果错误。 ⑷以数组名作参数时,采取的不是“值传送”方式,而是“地址传送”方式,即把实参数组的起始地址传给形参数组,这样形参数组就和实参数组共占一段内存单元。如上例可表示为:

5.1.5 一维数组应用举例

【例】:输入10个数,用“起泡法”对10个数排 序(由小到大)。 “起泡法”算法:以六个数9、8、5、4、2、0为 例。

第1趟比较 第2趟比较 第 8 页 共 30 页

联系合同范文客服:xxxxx#qq.com(#替换为@)