一、知识点总结:
1、冒泡排序:
#include<Stdio.h> int main() { int i,j,n,t,a[10],k; n=6; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=1;i<n;i++){ for(j=0;j<n-1;j++){ if(a[j]>a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf("j=%d",j); for(k=0;k<n;k++) printf("%4d",a[k]); printf("\n"); } printf("第%d趟排序结果",i); for(k=0;k<n;k++) printf("%4d",a[k]); printf("\n"); } printf("排序后结果:"); for(i=0;i<n;i++) printf("%4d",a[i]); return 0; }
※冒泡排序法效率不高,需要约二分之n的平方次比较。只适用于小的数组。
2、指针、数组和地址间的关系:
(1)数组的基地址是在内存中存储数组的起始位置,是数组中第一个元素(下标为0的地址),因此数组名本身是一个地址即指针值。
(2)在访问内存方面,指针和数组几乎是相同的。
①指针是以地址作为值得变量
②数组名的值是一个特殊的固定地址,可以把它看作是常量指针。
(3)p=a;等价于p=&a[0];
p=a+1;等价于&a[1];
*(a+i)等价于a[i]
3、选择排序:
#include<Stdio.h> void xz(int x[],int n) { int i,j,k,t; for(i=0;i<n;i++){ k=i; for(j=i+1;j<n;j++) if(x[j]<x[i]) k=j; if(k!=i){ t=x[k]; x[k]=x[i]; x[i]=t; } } } int main() { int *p,i,j,a[10],k,n,temp; printf("Enter n:"); scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); p=a; xz(p,n); printf("After sorted:"); for(i=0;i<n;i++){ printf("%5d",a[i]); } return 0; }
二、遇到的问题:
这次作业的第三题没看懂,后来理解了后没理清思路,抽时间多尝试一下。
三、实验心得:
在现在学习中更注重了对以前知识的综合运用,在实验的同时也加强了前一段时间学习内容的记忆。现在上课的练习也多了,在课下也要继续努力。