常考编程指导

常考编程指导

ID:47847588

大小:138.00 KB

页数:18页

时间:2019-11-26

常考编程指导_第1页
常考编程指导_第2页
常考编程指导_第3页
常考编程指导_第4页
常考编程指导_第5页
资源描述:

《常考编程指导》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、全国计算机二级C常考算法编程指导1.变量交换voidswap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}2.累加用C语言实现l+2+3+4+5+...+n的累加。【方法1】while循环实现intadd(intn){inti,sum;sum=0;i=l;while(i<=n){sum=sum+i;i=i+1;}returnsum;}main(){ints,n;printf(nlnputn:H);scanf(”%d”,n);s=add(n);/*函数调用*/printf(',l+2+...+%d=%d,,,n,

2、s);}【方法2】for•循环实现(main函数同上)intadd(intn){inti,sum=0;for(i=l;i<=n;i++)sum=sum+i;returnsum;}do-while循环也可以实现累加,请读者自己完成。3.累乘用C语言求n的阶乘:n!=(n>l)intproduct(intn){inti,p=l;fbr(i=2;i<=n;i-H-)p=p*i;returnp;}如果n的值比较大,函数返回值和存放乘积的变量p应定义为long或者double型。4.排序(1)冒泡排序(主函数main参考教材181-182页)voidBubbleSort(in

3、ta[],intn){inti,j,tmp;fdr(i=O;ia[j+l])/*从小到大,升序*/{tmp=a[j];a[j]=a[j+l];a[j+l]=tmp;}/*交换a[j]与a[j+l],大数后移*/}}(1)选择排序voidSelectSort(inta[],intn){inti,j,min,tmp;fbr(i=O;i

4、n])min=j;/*找最小的数,将最小数的下标记录下来*/if(i!=min){tmp=a[i];a[i]=a[min];a[min]=tmp;}/*将最小的数与第一个数进行交换*/}}(2)插入排序voidInscrtSort(inta[],intn){inti,j,tmp;fdr(i=l;i=0&&a[j]>tmp;j—)a[j+l]=a[j];/*大于tmp的数向后移位*/a[j+l]=tmp;/*tmp归位*/}}1.归并(合并)将两个有序数组A、B合并成另一个有序的数组C(升

5、序或降序)。升序合并步骤如下:%1先在A、B数组中各取笫一个元素进行比较,将小的元素放入C中。%1取小的元索所在数组的F—个元索与另一个数组中上次比较后较人的元索进行比较。%1重复上述比綾过程,肓到某个数组被先排完。%1将另一个数组剩余元索抄入C中,合并排序完成。voidmcrgc(inta[],intm,intb[n],intn,intc[]){intia=0,ib=0,ic=0;while(ia

6、ile(ia

7、turn(-1);}如果对一个升序数组进行线性法杏找,循环结束条件改为“i

8、

9、a[i]>kcy)o(1)折半法查找(二分法查找)#defineN10intfind(inta[N],intkey){intm,p,q;p=0;q=N-l;/*p为第1个元素的下标,q为最后一个元素的下标*/whilc(p<=q){m=(p+q)/2;/*m为中间元素的卜•标*/if(a[m]==key){return(m);break;}elseif{keyq)return(-1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。