收藏 分销(赏)

C语言教学课件:_19-2第六章习题_.ppt

上传人:胜**** 文档编号:7903064 上传时间:2025-01-25 格式:PPT 页数:23 大小:235KB
下载 相关 举报
C语言教学课件:_19-2第六章习题_.ppt_第1页
第1页 / 共23页
C语言教学课件:_19-2第六章习题_.ppt_第2页
第2页 / 共23页
C语言教学课件:_19-2第六章习题_.ppt_第3页
第3页 / 共23页
C语言教学课件:_19-2第六章习题_.ppt_第4页
第4页 / 共23页
C语言教学课件:_19-2第六章习题_.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第六章数组习题,补充题,1.,将一个数组中的值按逆序重新存放,如:原来顺序为,8,6,7,4,10,,要求改为,10,4,7,6,8,。,#include,enum N=5;,void invert1(int a,int n);,void invert2(int*,int n);,int main(),int i,aN;,for(i=0;iN;i+),scanf(%d,invert1(a,N);,for(i=0;iN;i+),printf(%4d,ai);,printf(n);,invert2(a,N);,

2、for(i=0;iN;i+),printf(%4d,ai);,printf(n);,return 0;,void invert1(int a,int n),int i=0,j=n-1,temp;,for(i=0;ij;i+,j-),temp=ai;,ai=aj;,aj=temp;,void invert2(int*p,int n),int*begin=p,*end=p+n-1,temp;,for(;beginend;begin+,end-),temp=*begin;,*begin=*end;,*end=temp;,7.,写一个函数,它判断一个整数(或浮点数)是否在一个数组中出现。如果出现,给出

3、第一次出现位置的下标;没有出现给出值,-1,。,#include,enum N=5;,int find1(int a,int n,int x);,int find2(int*,int n,int x);,int main(),int i,aN,x,m;,for(i=0;iN;i+),scanf(%d,printf(Input a number for searching in array.n);,scanf(%d,m=find1(a,N,x);,if(-1=m),printf(No foundn);,else,printf(The number is at%dth location.n,m);

4、,m=find2(a,N,x);,if(-1=m),printf(No foundn);,else,printf(The number is at%dth location.n,m);,return 0;,int find1(int a,int n,int x),int i=0;,for(i=0;in;i+),if(ai=x),return(i+1);,return-1;,int find2(int*p,int n,int x),int*begin=p;,for(;beginp+n;begin+),if(*begin=x),return(begin-p+1);,return-1;,8.,写一个

5、函数、统计它在数组里出现的次数。,#include,enum N=5;,int search1(int a,int n,int x);,int search2(int*,int n,int x);,int main(),int i,aN,x,m;,for(i=0;iN;i+),scanf(%d,printf(Input a number for searching in array.n);,scanf(%d,m=search1(a,N,x);,printf(%d appeared%d times.n,x,m);,m=search2(a,N,x);,printf(%d appeared%d ti

6、mes.n,x,m);,return 0;,int search1(int a,int n,int x),int i=0,count=0;,for(i=0;in;i+),if(ai=x),count+;,return count;,int search2(int*p,int n,int x),int*begin=p,count=0;,for(;beginp+n;begin+),if(*begin=x),count+;,return count;,12.1,实现一个由数组表示的多项式的求值,写一个求数组中最大值的函数。,#include,enum N=5;,double poly1(int a,

7、int n,double x);,double poly2(int*,int n,double x);,int main(),int i,aN;,double x;,for(i=0;i=0;i-),sum=sum*x+ai;,return sum;,double poly2(int*p,int n,double x),int*pn=p+n-1;,double sum=0;,for(;pn=p;pn-),sum=sum*x+*pn;,return sum;,12.2,实现一个由数组表示的多项式的求值,写一个求数组中最大值的函数。,int max1(int a,int n),int i=0,max

8、=a0;,for(i=1;imax),max=ai;,return max;,int max2(int*p,int n),int*pn=p,max=*p;,for(;pnmax),max=*pn;,return max;,15.1,请写一个函数,它输入一个学生成绩文件,输出按照每,10,分一个成绩段的学生人数。,#include,enum N=10;,void count(int,int);,void count2(int*,int);,int main(),int i=0,scoreN,x;,while(i=0&x=100),scorei=x;,i+;,count(score,N);,ret

9、urn 0;,void count(int score,int n),int i,seg11=0;,for(i=0;in;i+),segscorei/10+;,for(i=0;i11;i+),printf(the numble of%d,segmentations is%dn,i+1,segi);,void count2(int*score,int n),int*p,seg11=0;,for(p=score;pscore+n;p+),seg(*p)/10+;,for(p=seg;pseg+11;p+),printf(the numble of%dth segmentations is%dn,p

10、-seg+1,*p);,15.2,请写一个函数,它输入一个学生成绩文件,输出其中不及格的人数,(=60&=75&=85),。,void count(int score,int n),int i,seg4=0;,for(i=0;in;i+),if(scorei60),seg0+;,else if(scorei75),seg1+;,else if(scorei85),seg2+;,else,seg3+;,printf(“,不及格、及格、良好、,优秀的人数分别是:,n);,for(i=0;i4;i+),printf(%dn,segi);,#include,enum N=10;,void count(

11、int,int);,int main(),int i=0,scoreN,x;,while(i=0&x=100),scorei=x;,i+;,count(score,N);,return 0;,补充题,1,将插入、冒泡和选择排序改写成完整函数,并在主程序中调用实现,N,个正整数从大到小排序(,N,个数由键盘输入)。,对比插入、冒泡和选择哪种排序法效率高?,理论分析:在程序中计算数据移动或交换的次数,实验分析:对不同的,N,记录三种方法的运行时间,根据排好序的,N,个正整数,用折半查找法完成某个数的查找(要求先调用排序函数再调用查找函数)。,#include,enum N=10;,void ins

12、ertsort(int a,int n);,void bubblesort(int a,int n);,void selectsort(int a,int n);,void bisearch(int a,int n,int x);,int main(),int i,aN,x;,for(i=0;iN;i+),scanf(%d,/insertsort(a,N);,/bubblesort(a,N);,selectsort(a,N);,printf(,排序后:,n);,for(i=0;iN;i+),printf(%4d,ai);,printf(,输入要查找的数:,n);,scanf(%d,bisear

13、ch(a,N,x);,return 0;,void insertsort(int a,int n),int i,j;,int t;,for(i=1;i=0 -j),aj+1=aj;,if(j!=i-1)aj+1=t;,void bubblesort(int a,int n),int flag,i,j,t;,for(j=1;j=n-1;j+),flag=0;,for(i=0;i=n-j-1;i+),if(aiai+1),t=ai;,ai=ai+1;,ai+1=t;,flag=1;,if(!flag)return;,void selectsort(int a,int n),int i,j,t,k;

14、,for(i=0;iN-1;i+),k=i;,for(j=i+1;jak)k=j;,t=ak;,ak=ai;,ai=t;,void bisearch(int a,int n,int x),int t=0,b,find=0,m;,b=n-1;,do,m=(t+b)/2;,if(am=x),printf(,找到了,%3d,是,a%dn,x,m);,find=1;,else if(xam),t=m-1;,else,b=m+1;,while(t=b,if(find=0),printf(%3d,没有找到,.n,x);,补充题,2,:,写程序实现例,4,:,将,a,数组中从第,m,个元素起一直到最后的元素

15、平移到数组的开头(写函数并调用)。,void transfer(int a,int n,int m),int i,j,temp;,for(i=0;i=0;j-),aj+1=aj;,a0=temp;,#include,enum N=10;,void transfer(int a,int n,int m);,int main(),int i,aN,x;,for(i=0;iN;i+),scanf(%d,transfer(a,N,7);,printf(“,移动后:,n);,for(i=0;i 0),if(n max),max=n;,strcpy(maxword,word);,if(max 0)prin

16、tf(%sn,maxword);,return 0;,int getword(void),int c,i=0;,while(iMAXLEN-2&(c=getchar()!=EOF&c!=n&c!=),wordi=c;+i;,wordi=0;,return i;,13.,写一个函数,它能够判断一个字符串是否为一个回文。,#include,#include,int ishuiwen(char s,int n);,int ishuiwen2(char*s,int n);,int main(),char s=levvvel;,int n=strlen(s);,if(ishuiwen(s,n),prin

17、tf(yesn);,else,printf(non);,return 0;,int ishuiwen(char s,int n),int i;,i=0;,while(in-i-1),if(si=sn-i-1)i+;,else return 0;,return 1;,int ishuiwen2(char*s,int n),char*head=s,*end=s+n-1;,while(headend),if(*head=*end)head+;end-;,else return 0;,return 1;,/,用数组打印杨辉三角,#include,#define N 12,void yanghui(in

18、t aN);,int main(),int aNN=1;,yanghui(a);,return 0;,void yanghui(int aN),int i,j;,for(i=1;iN;i+),for(j=0;jN;j+),if(j=0|j=i)aij=1;,else aij=ai-1j-1+ai-1j;,printf(,杨辉三角,:n);,for(i=0;iN;i+),for(j=0;ji+1;j+),printf(%4d,aij);,printf(n);,补充题,1,:借助二维数组打印杨辉三角,补充题,2,:找出二维矩阵的鞍点,如果没有鞍点打印相应信息鞍点:该元素在矩阵所在的行中最大,所在的

19、列中最小,void andian(int a3,int n),int i,j,k,p,flag,f=0;,for(i=0;in;i+),k=0;,for(j=1;j4;j+),if(aikaij)k=j;,p=0;,flag=1;,while(papk)flag=0;,p+;,if(flag),printf(andian at%dth row,%dth col.its%d.n,i,k,aik);,f=1;,if(!f)printf(no found.n);,#include,void andian(int a3,int n);,int main(),int a33=1,3,8,3,7,9,2,

20、1,13;,andian(a,3);,return 0;,五阶幻方算法,从左下向右上放数,先把,1,放在第一行的中间位置。,下一个数放在上一个数的右上方,若右上方已超出方阵的第一行,则下一个数放在该列的最后一行上。,若右上方已超出方阵的最后一列,则下一个数放在该行的第一列上。,若右上方已有数或右上方已超出方阵的第一行和最后一列,则下一个数放在上一个数的正下方。,void MagicArray(int aN,int n),int i,j,k;,for(i=0;in;i+),for(j=0;jn;j+),aij=0;,i=0;j=n/2;a0j=1;,for(k=2;k=n*n;k+),i=i-1

21、;j=j+1;,if(i(n-1),i=i+2;j=j-1;,else,if(i(n-1),j=0;,if(aij=0),aij=k;,else,i=i+2;j=j-1;,aij=k;,for(i=0;in;i+),for(j=0;jn;j+),printf(%5d,aij);,putchar(n);,自学,6.6.4,节,(P208),统计,C,程序里的关键字,完成实现相关程序,int main(),int i,n,counts32=0;,char wordM;,char keywords329=,auto,break,case,char,const,continue,default,do,

22、double,else,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while,;,while(getident(M,word)!=-1),for(n=0;n 32;n+),if(strcmp(word,keywordsn)=0),countsn+;,break;,for(i=0;i 32;i+),printf(%6d,countsi);,return 0;,#include,#include,enum M=20;,int getident(int limit,char word);,int getident(int limit,char word),int c,i=0;,while(ilimit-1&(c=getchar()!=EOF&c!=n&c!=&c!=t&,c!=;&c!=(&c!=)&c!=&c!=&c!=&c!=,),wordi=c;+i;,wordi=0;,if(c=EOF),return-1;,else,return i;,Q&A!,

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服