一、实验目的:
1、理解数组名作函数参数时,实参向形参传递的是数组首地址,可以利用此特性在函数中修改数组元素的值,从而达到改变实参数组的目的,并掌握选择排序等算法;
2、能正确区分局部变量和全局变量的定义、作用域的不同,并能正确使用这两类不同变量;
3、理解生存期的概念,区分静态存储方式、动态存储方式的不同,熟悉局部变量的几种存储方式和全局变量作用域扩展、限制的方法;
4、熟悉外部函数跨文件的使用;
5、vc++调试入门。
二、实验内容。
1、编程计算数组各元素的平方和,要求如下:
1)void array_input(int array,int n)的功能是:输入整型数组array的各元素值,参数n是数组元素的个数;
2) int square_sum(int array,int n)的功能是:对整型数组array的各元素的平方求和,参数n是数组元素的个数;
3)主函数的功能:定义一个是长度为6的整型数组,通过调用array_input()输入各元素的值,再调用square_sum()得到各元素平方和,最后输出结果;
4)主函数在前,上述两个函数在后面定义。程序运行如下图所示:
2、编程求数组各元素的中位数,要求如下:
1)void array_input(double array,int n)的功能是:输入double型数组array的各元素值,参数n是数组元素的个数;
2)void select_sort(double array,int n)函数实现从小到**择排序功能,参数n是数组元素的个数;
3)double median(double array,int n)的功能是:求出有序数组array各元素的中位数,参数n是数组元素的个数;
说明:中位数就是在已排序的各元素中,处于中间位置的元素值:当数组元素个数为奇数时,处于中间位置的元素只有一个,中位数就是该元素的值;当数组元素个数为偶数时,处于中间位置的元素只有两个,中位数就是这两个元素的简单算术平均数)
4)主函数的功能:定义一个是长度为8的double型数组,通过调用array_input()输入各元素的值,再调用select_sort()对数组各元素排序,之后调用median()得到中位数,最后输出结果;
5)主函数在前,上述三个函数在后面定义。程序运行如下图所示:
3、比较全局变量与局部变量:
分析下列程序,写出执行结果,然后上机调试验证(参考vc++调试入门。doc,先按要求设置断点,再按f11逐语句或按f10 逐过程调试),比较结果是否正确,并回答相关问题:
#include <>
int c, a=4 ;
int func1(int a , int b);
int main()
//断点①
int b=2, p=0;
c=1; p=func1(b, a); 断点②
printf("a=%d, b=%d, c=%d, p=%d",a,b,c,p); 断点⑤
return 0;
int func1(int a , int b)
c=a*b; /断点③
a=b-1;
b++;return (a+b+1); 断点④
问题:1) 哪些是局部变量? 哪些是全局变量? 它们的值如何变化?
2) 这些变量的作用域如何确定?
4、理解块作用域:
分析下列程序,写出执行结果,然后上机调试验证(先按要求设置断点,再按f11逐语句或按f10 逐过程调试),比较结果是否正确,并回答相关问题:
#include <>
int main( )
int x=5,y=2;
printf("x=%d, y=%d",x,y); 断点①
if(x>4)
x+=y--;
printf("x=%d, y=%d",x,y); 断点③
return 0;
问题:1) x和y值是如何变化的?
2) 块内的x与块外的x是同一变量吗?
3) 如何理解“内层变量屏蔽外层同名变量”?
5、掌握静态局部变量的用法:
分析下列程序,写出执行结果,然后上机调试验证(按f11逐语句或按f10 逐过程调试),比较结果是否正确,并回答相关问题:
#include <>
int func(int c);
int main()
printf("%d",func(1));
printf("%d",func(1));
return 0;
int func(int c)
int a = 0;
static int b = 1; ab
return a+b+c;
问题:1) func()的a、b、c三个变量中,哪些是自动变量?哪些是静态局部变量?
2) 为什么两次调用函数的结果不同?
3) 静态局部变量如何初始化?不赋值可以吗?
6、熟悉全局变量在多文件中的使用:
现有如下两个程序文件:
#include <>
int n=10;
int main()
extern void func();
printf("n=%d",n);
func();
return 0;
#include <>
extern int n; /全局变量n的引用声明。
void func()
printf("func:n=%d",n);
先建立项目,再添加这两个文件内容,之后编译、运行。并回答下列问题:
1) 是如何引用全局变量n的?
2) 是如何声明、调用函数func()的?能否去掉extern关键字?
3) 中定义func()时,如果在void之前加上static关键字后,func()能否在中调用?为什么?
实验10 函数调用 一
学号姓名成绩。一 实验目的。1 掌握c语言函数的定义 声明以及函数的调用方法。2 了解主调函数和被调函数之间的参数传递方式。二 实验内容。1.以下程序的正确运行结果是5,25 include void num extern int x,y int a 15,b 10 x a b y a b int ...
实验10函数嵌套调用
实验10 函数嵌套递归调用。实验时间 11月26日星期一12节实验地点 2机房。一 实验实训目的及要求 1 掌握函数嵌套递归调用。2 了解嵌套调用和递归调用之间的相同和不同点。二 实验实训内容 1 写一函数,是给定的一个二位数组 4 4 转置,即行列互换。2 写一函数,用 起泡法 对输入的10个字符...
实验10函数嵌套调用
实验七函数嵌套递归调用。实验时间 4月9日星期一34节实验地点 2机房。一 实验实训目的及要求 1 掌握函数嵌套递归调用。2 了解嵌套调用和递归调用之间的相同和不同点。二 实验实训内容 1 写一函数,是给定的一个二位数组 4 4 转置,即行列互换。2 写一函数,用 起泡法 对输入的10个字符按由小到...