实验四
实验结论
一 对part1到part4的总结
1>
数组名作为函数参数时,形参、实参的语法形式书写注意事项,函数调用和参数传递过程 。
c语言支持在对数组初始化时,只初始化一部分元素。这种情形下,剩余没有被初始化的元素值,系统自动
设为0。
函数声明和函数定义中,函数名init后面括号里出现的是形式参数,数组名后面要加[ ]。
函数调用中,函数名init后面括号里出现的是实际参数,直接写数组名。
2>对冒泡法的归纳总结。
冒泡法,用于排序,其基本算法就是把一组数据中的相邻两数进行比较,将大数放后,小数放前,(当然也可以反过来).
原理
假设要对n个数由小到大排序,使用冒泡法具体排序过程如下:
第1遍: 对n个数进行第1遍扫描
比较第1个数与第2个数,若a1>a2,则交换;此时,a2中存放a1和a2两个数当中的最大值。
比较第2个数与第3个数,若a2>a3,则交换;此时,a3中存放a2和a3两个数当中的最大值。
依次类推…
比较第n-1个数和第n个数,若an-1>an ,则交换;此时,an中存放an-1和an当中的最大值。
经过(n-1)次比较后,最大的数被放在an
第2遍: 前面n-1个数进行第2遍扫描:
。。。
经过(n-2)次比较后,第2大的数被放在an-1
… …
第n-1遍: 对前面2个数进行第n-1遍扫描
。。。
经过1次比较后,第2小的数被放a2
至此,排序过程结束。
其实想要理解很简单 在纸上一步一步算 就会理解冒泡法的原理了
至于边界条件值得注意 不妨把边界值带进去 也是一个很好的方法
二Part5:编程练习。
找最大整数
编码
// 功能描述:输入一组整数,输出最大值 #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<5;i++) { scanf("%d",&a[i]); printf("%d\n",a[i]); } max=findMax(a,N); printf("数组a中最大元素值为: %d\n\n", max); return 0; } int findMax(int a[],int n) { int i,max; max=a[0]; for(i=0;i<n;i++) if(a[0]>max) max=a[i]; return max; }
练习二
使用冒泡法对字符数组由大到小排序。
#include <stdio.h> const int N=4; void output(char x[], int n); void bubblesort(char x[], int); 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 j,k; char t; for(k=0;k<n-1;k++){ for(j=0;j<n-1-k;j++){ if(x[j]<x[j+1]){ t=x[j+1]; x[j+1]=x[j]; x[j]=t; } } } }
总结
这此实验 感觉有点难 尤其是冒泡法 不过练了一下午总算懂了
不管怎么说 学习总是要重复的
互评
1
https://www.cnblogs.com/hx-123/p/10758742.html
2
https://www.cnblogs.com/lxl720/p/10770167.html
3
https://www.cnblogs.com/zys-0119/p/10769529.html