实验四
Part1-Part4总结
1.数组名作为函数参数时,形参与实参的语法形式书写,函数调用和参数传递过程
(其实我不算特别明白,如果说错还请大佬们批评指正......)
函数声明和定义中,函数名init后的括号中出现的是形参,数组名后要加 [ ]
如:void init(int [a], int n, int value);
函数调用中,函数名init后的括号中出现的是实参,直接写数组名
如:init(b,N,-1);
数组名标记了一个连续存储区域的首地址,作为参数传递时,将数组在内存中的存储地址作为参数来传递。函数操作的是指向同样一个存储区域中的数据,而不是数组本身的副本。
2.冒泡法总结
基本思想:两个相邻元素依次比较,将较大(较小)的元素放在后面(前面),直至最后一个数,此时完成了一趟冒泡;当所有的数都经过了比较和交换的操作后,就可以得到排好的次序了。
(PS:老师推荐的网站里那个解释冒泡排序法的动图 真的非常形象!我一开始虽然说大概理解了,但总觉得哪里还没想明白,看到那个动图我就恍然大悟了!)
Part5 编程练习
1.查找一组整型数据的最大值
#include <stdio.h> int findMax(int a[],int n); const int N=5; int main() { int a[N]; int max, i; printf("输入%d个整数: \n", N); for(i=0;i<N;i++) scanf("%d",&a[i]); max=findMax(a,N); printf("数组a中最大元素值为: %d\n\n", max); return 0; } int findMax(int a[],int n) { int i,j,max; max=a[0]; for(i=0;i<N;i++) { if(a[i]>max){ max=a[i]; } } return max; }
运行结果
2.使用冒泡法对字符数组从大到到小排序
#include <stdio.h> const int N=4; void output(char x[], int n); void bubblesort(char x[], int n); int main() { char string[N] = {'2','0','1','9'}; int i; printf("排序前: \n"); output(string, N); bubblesort(string,N); printf("\n排序后: \n"); output(string, N); printf("\n"); return 0; } void output(char x[], int n) { int i; for(i=0; i<N; i++) printf("%c", x[i]); } void bubblesort(char x[],int n) { int i,j,t; for(i=0;i<n-1;i++){ for(j=0;j<n-i-1;j++){ if(x[j]<x[j+1]){ t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } } }
运行结果
小结:做这两道编程题的时候,虽然不是很顺利,中间还是会有很多bug,但总体感觉比以前好一点点点点了......那个冒泡排序法的程序,我觉得我还是要再吃透一下,感觉自己还没有掌握的非常好,输出最大数的那题,我还是不能很顺利地写出子函数的程序,还要回去看看我以前是怎么写类似程序的,这说明我还是没有完全理解输出最大数最小数的原理,我还是需要多多练习,多编几道程序,直到我自己能很顺利地写出来。加油吧!