函数:
对于函数最基本的理解是从那个叫main的单词开始的,一开始总会觉得把语句一并 写在main里不是挺好的么,为什么偏择出去。其实这是因为对函数还不够熟练,否则函数的运用会给我们编程带来极大的便利。我们要知道函数的返回值类型, 参数的类型,以及调用函数时的形式。事先的函数说明也能起到一个提醒的好作用。所谓形参和实参,即在调用函数时写在括号里的就是实参,函数本身用的就是形 参,在画流程图时用平行四边形表示传参。
函数的另一个应用例子就是递归了,本文作者开始比较头疼的问题,反应总是比较迟钝,按照老师的方法,把递归的过程耐心准确的逐级画出来,学习的效果还是比较好的,会觉得这种递归的运用是挺巧的,事实上,闻名的八皇后、汉诺塔等问题都用到了递归。
| 例子: long fun(int n) { long s; if(n==1||n==2) s=2; else s=n-fun(n-1); return s; } main() { printf("%ld",fun(4)); } |
数组:
分为一维数组和多维数组,其存储方式画为表格的话就会一目了然,其实就是把相同类型的变量有序的放在一起。因此,在处理比较多的数据时(这也是大多数的情况)数组的应用范围是非常广的。
具体的实际应用不便举例,而且绝大多数是与指针相结合的,本文作者个人认为学习数组在 更大程度上是为学习指针做一个铺垫。作为基础的基础要明白几种基本操作:即数组赋值、打印、排序(冒泡排序法和选择排序法)、查找。这些都不可避免的用到 循环,假如觉得反应不过来,可以先一点点的把循环展开,就会越来越熟悉,以后自己编写一个功能的时候就会先找出内在规律,较好的运用了。另外数组做参数 时,一维的[]里可以是空的,二维的第一个[]里可以是空的但是第二个[]中必须规定大小。
| 冒泡法排序函数: void bubble(int a[],int n) { int i,j,k; for(i=1,i<n;i ) for(j=0;j<n-i;j ) if(a[j]>a[j 1]) { k=a[j]; a[j]=a[j 1]; a[j 1]=k; } } 选择法排序函数: void sort(int a[],int n) { int i,j,k,t; for(i=0,i<n-1;i ) { k=i; for(j=i 1;j<n;j ) if(a[k]<a[j]) k=j; if(k!=i) { t=a[i]; a[i]=a[k]; a[k]=t; } } } 折半查找函数(原数组有序): void search(int a[],int n,int x) { int left=0,right=n-1,mid,flag=0; while((flag==0)&&(left<=right)) { mid=(left right)/2; if(x==a[mid]) { printf("%d%d",x,mid); flag =1; } else if(x<a[mid]) right=mid-1; else left=mid 1; } } |
|||
| 共3页: 上一页 [1] 2 [3] 下一页 | |||
![]() |