C程序设计课件5.12_第1页
C程序设计课件5.12_第2页
C程序设计课件5.12_第3页
C程序设计课件5.12_第4页
C程序设计课件5.12_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【例1】通过函数调用方式计算下列表达式的值。#include"stdio.h"floatfun(intn){inti,f=1;floats=0,t;

for(i=1;i<=n;i++){s+=f*t;/*将第i项累加到s*/f=-f;/*得到下一项的符号*/}returns;}voidmain(){intn;printf("n=");scanf("%d",&n);printf("%f\n",fun(n));}t=1.0/(2*i-1);/*得到第i项的绝对值*//*求前n项和函数*//*主函数*/程序1☞【例2】通过函数调用方式计算high以内的10个最大素数之和。#include"stdio.h"intfun(inthigh){intsum=0,n=0,i;while(high>=2&&n<10){}returnsum;}voidmain(){inth;printf("high=");scanf("%d",&h);printf("sum=%d\n",fun(h));}/*求素数和函数*//*主函数*/for(i=2;i<=high-1;i++)if(high%i==0)break;if(i>=high){n++;sum+=high;}high--;程序2☞【例3】通过函数调用方式计算1!~20!之和。#include"stdio.h"doublesum(intn){doubles=0,t=1;inti;

for(i=1;i<=n;i++){}returns;}voidmain(){doublem;m=sum(20);printf("%f\n",m);}t*=i;/*得到i的阶乘*/s+=t;/*将i的阶乘累加到s*//*求阶乘和函数*//*主函数*/程序3☞ddc【例4】通过函数调用方式删除字符串中的空格。

#include"stdio.h"delkg(char*s){char*p,*q;p=q=s;

while(*q){}*p='\0';}voidmain(){charstr[81];gets(str);delkg(str);printf("%s",str);}if(*q!='

')*p++=*q;/*当前字符不是空格,前移*/q++;/*删除空格函数*//*主函数*/程序4☞\0pqcge\0ge【例5】通过函数调用方式统计英文句子中单词的个数。

#include"stdio.h"fun(char*s){char*p;intword=0,num=0;p=s;

while(*p){}

returnnum;}voidmain(){charstr[81];gets(str);printf("num=%d\n",fun(str));}if(*p=='')word=0;elseif(word==0){num++;word=1;}p++;/*统计单词函数*//*主函数*/程序5☞pword=01owreou\0y(标识当前字符的前一个字符是否为空格)ahnum=0123【例6】通过函数调用方式分别计算n阶矩阵主、次对角线元素和。

voidmain(){inta[N][N],i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);fun(a);printf("sum1=%d\nsum2=%d\n",sum1,sum2);}#include"stdio.h"#defineN4intsum1,sum2;/*全局变量,分别存放主、次对角线元素和*/fun(intx[][N]){inti;sum1=sum2=0;

for(i=0;i<N;i++){}}/*计算主、次对角线元素和函数*//*主函数*/sum1+=x[i][i];sum2+=x[i][N-i-1];程序6☞#include"stdio.h"voidsqu(charx[],chary[]){inti=0,j=0,k;while(x[i]!='\0')

{

}}【例7】通过函数调用方式将一个字符串在另一个字符串中出现的字符删除。如:chars1[20]="Iamaboy",s2[20]="youareaboy";则在s1中删除s2存在的字符后,s1中字符串变为"Im"

。voidmain(){voidsqu(chara[],charb[]);chars1[20],s2[20];gets(s1);gets(s2);squ(s1,s2);printf("\n%s",s1);}while(y[j]!='\0'){

}i++;j=0;if(x[i]==y[j]){}elsej++;for(k=i;x[k]=x[k+1];k++);i--;break;/*删除字符函数*//*主函数*/程序7☞

②用R[i]的值与它前面的从R[i-1]开始的元素值进行比较,若R[i]的值小于它前面元素的值,则前面元素值后移一个位置,否则将R[i]的值存入空出的位置。记录的有序序列从R[1..i-1]变为R[1..i]。算法思想假设记录序列R[1..n]的状态为:

一趟直接插入排序的基本思想:监视哨

①若R[i]的值小于R[i-1]的值,将R[i]临时存储到R[0]单元,作为监视哨;i从2开始,直到n为止,重复上述操作,R[1..n]全部有序。有序序列R[1..i-1]无序序列R[i..n]R[0]有序序列R[1..i]无序序列R[i+1..n]R[i]【例8】用直接插入排序,将一组整数由小到大排序。

]

[

]

[

[

]对整数序列{70,83,100,65,10,65,9},采用直接插入排序法进行升序排序。初始序列:

R[0]70831006510659

7083第1趟:☞100651065

9第2趟:☞7083651065

9第3趟:☞100>65>6583>657065<83<1001065

9

]

[第4趟:☞100>10>1083>10701065

9>1065

]

[第5趟:☞100>65>6583>65701096565

]

[第6趟:☞100>9>983>9701096565>9>9>9100排序过程演示排序程序/*排序函数*//*主函数*/程序8☞#include"stdio.h"#defineN11/*下标为0的元素用作监视哨*/

insertsort(inta[],intn){inti,j;

for(i=2;i<n;i++)

}voidmain(){intx[N],i;for(i=1;i<N;i++)scanf("%d",x+i);insertsort(x,N);for(i=1;i<N;i++)printf("%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论