实训六 函 数 【实训目的】
1.掌握定义函数的方法;
2.掌握函数实参和形参的对应关系,以及“值传递”的方法; 3.掌握数组名作为实参时,实参和形参之间的传递方法 【实训内容】
1.分析和记录以下程序运行结果,并上机验证: (1)#include \ main() {
int x=2, y=4;
int swap( int, int );
printf(\ x=%d, y=%d\\n\ swap(x, y);
printf(\ x=%d, y=%d\\n\}
swap( int a, int b) {
int t;
printf(\ a=%d, b=%d\\n\ b); t=a; a=b; b=t;
printf(\ a=%d, b=%d\\n\ b); }
运行结果:
2.预测以下程序结果,并上机验证。 void fun1( )
{ int x=5; printf( \
void fun2( )
{ printf( \ }
main( )
{ int x=2; fun1( ); fun2( x );
printf( \ }
12
运行结果:
3.分析程序运行结果,并验证程序。 static int x=20; void fun1( int x ) { x+=10;
printf(\ }
fun2( )
{ x+=10; printf(\ }
main( )
{ int x=10; fun1( x ); fun2( );
printf(\ }
运行结果:
4.编程题:
(1)定义一个能判断任意整数a是否是素的函数isprime( int a),并利用这一函数,输出100~199之间的所有素数。 (2)定义一个函数递归函数 long f (int n) 求n!,并利用此函数,求出sum=4!+6!+7!的值。
13
实训七 指 针 【实训目的】
1.掌握指针的概念、指针变量的定义
2.掌握指针的运算(取地址运算&、取内容运算*、指针移动的运算等) 3.掌握指针与数组的关系 4.掌握指针与函数的关系 【实训内容】
1. 分析下列程序的运行结果,并上机验证。
(1)main()
{
int i, j, *pi, *pj; pi=&i;
pj=&j; i=5;
j=7; printf(\ printf( \
}
运行结果:
(2) main()
{
int a[ ]={ 1, 2, 3 }; int *p, i; p=a;
for ( i=0; i<3; i++ )
printf( \ %d %d %d\\n\
}
运行结果:
(3)main()
{
int a[ ]={ 2, 5, 3, 6, 8 }; int *p, i=1, s=0;
for ( p=a; p 运行结果: 14 2.编程题 (1)编写函数,求出小于或等于m的所有素数并放在数组a中,并把所有素数的个数作为函数值返回。函数原型如下:int fun(int *a,int m); (2)编写函数,分别求出数组a中所有奇数、偶数之和。形参n给出数组元素的个数,整型指针odd返回奇数之和,even返回偶数之和。函数原型如下:int fun(int *a,int n,int *odd,int *even); (3)编写函数,函数返回数组a中n个学生中低于平均分的人数,并将低于平均分的分数放在数组b中。函数原型如下:int fun(int *a,int n,int *b); 15