实验结论
Part 1
数组将类型相同的一组数据在内存中连续存放,由实验可看出数组中元素的内存地址是连续的,不同类型数据计算机为其分配的内存空间是不同的。
Part 2
定义一维数组a,须指明它包含的元素个数和元素类型,通过数组名和下标的形式引入数组元素,数组下标从0开始,当对所有元素进行初始化时可以省略数组大小,当只初始化一部分元素时剩余没有被初始化的元素值,系统自动设为0。
Part 3
函数名作为参数时,实参和形参的书写形式
函数声明和函数定义中,函数名init后面括号里出现的是形式参数,数组名后面要加[ ]。即:void init(int a[], int n, int value);
函数调用中,函数名init后面括号里出现的是实际参数,直接写数组名。即:init(b, N, -1);
Part 4
冒泡法对一组数据由小到大排序:把一组数据中相邻的两个数进行比较,较大的数放到后面。这样,经过一轮以后,最大的数就放到了最后。把剩余的数,再进行两两比较,经过第2轮后,第2大的数就放到了倒数第二的位置。接下来,做类似操作。若是由大到小排序类似,反过来就可以了。
用冒泡法对n个数小→大排序,
共需扫描(n-1)遍,第i遍扫描时需要比较(n-i)次
但在程序中略有不同:for(j=0; j<n-1-i; j++) 这是由于数组下标从0开始造成的
Part 5
练习1:补全程序,查找一组整型数据的最大值。
1 #include <stdio.h> 2 int findMax(int a[], int n); 3 const int N=5; 4 int main() { 5 int a[N]; 6 int max, i; 7 printf("输入%d个整数: \n", N); 8 for(i=0;i<N;i++) 9 scanf("%d",&a[i]); 10 11 max=findMax(a,N); 12 13 14 15 printf("数组a中最大元素值为: %d\n\n", max); 16 return 0; 17 } 18 int findMax(int a[],int n){ 19 int i,j,t,max; 20 for(i=0;i<n-1;i++){ 21 if(a[i]>a[i+1]){ 22 t=a[i+1]; 23 a[i+1]=a[i]; 24 max=a[i+1]; 25 } 26 } 27 return max; 28 }
练习2:补全程序,使用冒泡法对字符数组由大到小排序。
1 #include <stdio.h> 2 const int N=4; 3 void output(char x[], int n); 4 void sort(char x[], int n); 5 int main() { 6 char string[N] = {'2','0','1','9'}; 7 int i; 8 printf("排序前: \n"); 9 output(string, N); 10 sort(string,N); 11 printf("\n排序后: \n"); 12 output(string, N); 13 printf("\n"); 14 return 0; 15 } 16 17 void output(char x[], int n) { 18 int i; 19 for(i=0; i<N; i++) 20 printf("%c", x[i]); 21 } 22 23 void sort(char x[],int n){ 24 char i,j,t; 25 for(i=0;i<n-1;i++){ 26 for(j=0;j<n-1-i;j++){ 27 if(x[j]<x[j+1]){ 28 t=x[j]; 29 x[j]=x[j+1]; 30 x[j+1]=t; 31 } 32 } 33 } 34 35 }
实验总结与体会
对函数定义调用有了一定的理解,稍有掌握,但综合应用欠缺,具体编程问题很多,要勤加联系一一克服。