发两个程序,以视今天下午的学习成果,如果你也是初学者,一起加油!!!
本人为了考研最近在猛力的复习C,虽然大二的时候学过点,不过那时候完全是为了过二级,两年过后都还给老师了,而且当时只是死记硬背,没有试着去理解其中的精髓,现在用谭浩强老师的书复习,现在配合着严蔚敏老师的《数据结构》,试着入门,今天下午编写了两个一维数组的简单程序。没有论坛各位大神的水平,现在只求掌握基础,循序渐进,希望各位不要笑话。1、颠倒数组中元素的顺序:
程序代码:
#include<stdio.h> void main() { void inv(int *x,int n); int a[10]; int i,*p; printf("The original array:\n"); for (i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); inv(a,10); printf("The array has been inverted:\n"); for(p=a;p<(a+10);p++) printf("%d ",*p); } void inv(int *x,int n) { int temp,i,j,m=(n-1)/2; for(i=0;i<m;i++) { j=n-1-i; temp=*(x+i); *(x+i)=*(x+j); *(x+j)=temp; } return; }
2、对数组元素进行从大到小排序:
程序代码:
#include<stdio.h> void main() { void sort(int *x); int i,*p; int a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); sort(a); for(p=a;p<(a+10);p++) printf("%d ",*p); printf("\n"); } void sort(int *x) { int i,j,temp; for(i=0;i<9;i++) { for(j=i+1;j<10;j++) { if(*(x+i)<*(x+j)) { temp=*(x+i); *(x+i)=*(x+j); *(x+j)=temp; } } } return; }
这两个程序是自己编写的,和谭浩强书上的程序略有差别,不过都运行成功了。
我的学习心得是:
1、不要一味的抄书,先理解书上算法的思路,这个很重要,然后根据自己的习惯和爱好编写程序。
2、注重细节,作为初学者,因为不熟练,总会出现编写过程中的语法错误,有时候很难发现,所以当发现错误时(哪怕很细微,例如该用“,”时用了“;”),都应该记录下来,一面下次再犯,减少不必要的修改时间,提高学习效率。
3、结合《数据结构》学习我觉得是很重要的,这门课深刻的讨论数据之间的关系,有助于初学者更好的掌握算法的思路和精髓,让编写过程中的思路更加清晰。
以上是今天的学习心得,希望和正在学习C的同学们交流!