发两个程序,以视今天下午的学习成果,如果你也是初学者,一起加油!!!
本人为了考研最近在猛力的复习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的同学们交流!









