计算机二级上机考试常有算法(不含计算问题)教学提纲.ppt

上传人:豆**** 文档编号:63551854 上传时间:2022-11-25 格式:PPT 页数:35 大小:143KB
返回 下载 相关 举报
计算机二级上机考试常有算法(不含计算问题)教学提纲.ppt_第1页
第1页 / 共35页
计算机二级上机考试常有算法(不含计算问题)教学提纲.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《计算机二级上机考试常有算法(不含计算问题)教学提纲.ppt》由会员分享,可在线阅读,更多相关《计算机二级上机考试常有算法(不含计算问题)教学提纲.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、计算机二级上机考试常有算法(不含计算问题)2:数组:数组xxN保存着一组位数的无符号正整数,其元素的个数通过变量保存着一组位数的无符号正整数,其元素的个数通过变量num传入函数传入函数fun()。请补充函数。请补充函数fun(),该函数的功能是:从数组,该函数的功能是:从数组xx中找出中找出个位和百位的数字相等个位和百位的数字相等的所有无的所有无符号整数,结果保存在数组符号整数,结果保存在数组yy中,其个数由函数中,其个数由函数fun()返回。返回。例如:当例如:当xx8=135,78,72,32,222,424,333,141,541时,时,bb6=787,232,222,424,333,1

2、41。#include#define N 1000int fun(int xx,int bb,int num)int i,n=0;int g,b;for(i=0;i=0;-i)d=ci;printf(%c,bd);printf(n);4:请补充函数:请补充函数fun(),该函数的功能是:把一个,该函数的功能是:把一个整数转换成字符串整数转换成字符串,并倒序保存,并倒序保存在字符数组在字符数组str中。例如:当中。例如:当n=13572468时,时,str=86427531。#include#include#define N 80char strN;void fun(long int n)int

3、 i=0;while(n0)stri=n%10+0;n/=10;i+;stri=0;数组特殊位置元素的确定数组特殊位置元素的确定1:下列程序定义了:下列程序定义了NN的二维数组,并在主函数中赋值。请编写函数的二维数组,并在主函数中赋值。请编写函数fun(),函数的功能,函数的功能是:求出数组周边元素的平方和并作为函数值返回给主函数中的是:求出数组周边元素的平方和并作为函数值返回给主函数中的s。#define N 5int fun(int wN)int i,j,k=0;int s=0;for(i=0;iN;i+)for(j=0;jN;j+)if(i=0|i=N-1|j=0|j=N-1)/*只要下

4、标中有一个为只要下标中有一个为0或或N-1,则它一定是周边元素,则它一定是周边元素*/s=s+wij*wij;/*将周边元素求平方和将周边元素求平方和*/return s;/*返回周边元素的平方和返回周边元素的平方和*/2:下列程序定义了NN的二维数组,并在主函数中自动赋值。请编写函数fun(int aN,int n),该函数的功能是:使数字右(左)上半三角元素中的值乘以m。#define N 5int fun(int aN,int m)int i,j;for(i=0;iN;i+)for(j=i;jN;j+)aij=aij*m;最大公约数与最小公倍数最大公约数与最小公倍数1:请请补补充充mai

5、n函函数数,该该函函数数的的功功能能是是:输输入入两两个个正正整整数数m和和n,求这两个数的最大公约和最小公倍数。,求这两个数的最大公约和最小公倍数。(题盘题盘34-2 83-2)#include main()int a,b,n,m,t;printf(nInput two numbers:n);scanf(%d,%d,&n,&m);if(nm)a=m;b=n;elsea=n;b=m;while(b!=0)t=a%b;a=b;b=t;printf(greatest common divisor:%dn,a);printf(least common multiple:%dn,n*m/a);判断素数

6、判断素数1:请编写一个函数:请编写一个函数void fun(int m,int k,int xx),该函数的功能是:,该函数的功能是:将大于整数将大于整数m且紧靠且紧靠m的的k个非素数存入所指的数组中。个非素数存入所指的数组中。例如,若输入例如,若输入15,5,则应输出,则应输出16,18,20,21,22。void fun(int m,int k,int xx)int i,j,n;for(i=m+1,n=0;nk;i+)/*找大于找大于m的非素数,循环的非素数,循环k次,即找出紧靠次,即找出紧靠m的的k个非素数个非素数*/for(j=2;ji;j+)/*判断一个数是否为素数判断一个数是否为素

7、数*/if(i%j=0)xxn+=i;/*如果不是素数,放入数组如果不是素数,放入数组xx中中*/break;/*并跳出本层循环,判断下一个数并跳出本层循环,判断下一个数*/字符串逆序存放字符串逆序存放1:请补充函数:请补充函数fun(),该函数的功能是:把从主函数中输入的字符串,该函数的功能是:把从主函数中输入的字符串str2倒置后倒置后接在字符串接在字符串str1后面。后面。例如:例如:str1=How do,str2=?od uoy,结果输出:结果输出:How do you do?。#define N 40void fun(char*str1,char*str2)int i=0,j=0,

8、k=0,n;char ch;char*p1=str1;char*p2=str2;while(*(p1+i)i+;while(*(p2+j)j+;n=j-;for(;k=j/2;k+,j-)ch=*(p2+k);*(p2+k)=*(p2+j);*(p2+j)=ch;*(p2+n)=0;for(;*p2;i+)*(p1+i)=*p2+;*(p1+i)=0;2:补充函数:补充函数fun(char*s),该函数的功能是把字符串中的内容逆置。,该函数的功能是把字符串中的内容逆置。例如:字符串中原有的字符串为例如:字符串中原有的字符串为abcde,则调用该函数后,串中的内容变为,则调用该函数后,串中的内容

9、变为edcba。#include#include#include#define N 81void fun(char*s)int i=0,n=strlen(s);char t;for(;in/2;i+)t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)=t;字符串中特定字符或字符串的统计字符串中特定字符或字符串的统计1:请补充函数:请补充函数fun(),该函数的功能是:按,该函数的功能是:按0到到9统计一个字符串中的奇统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库中。注意:不能使用字符串

10、库函数。函数。例如:输入例如:输入x=112385713.456+0.909*bc,结果为:,结果为:13,32,52,71,92。#include#define N 1000void fun(char*tt,int num)int i,j;int bb10;char*p=tt;for(i=0;i=0&*p=9)bb*p-0+;p+;for(i=1,j=0;i10;i=i+2,j+)numj=bbi;2:str是全部由小写字母字符和空格字符组成的字符串,由是全部由小写字母字符和空格字符组成的字符串,由num传入字符传入字符串的长度。请补充函数串的长度。请补充函数fun(),该函数的功能是:统计

11、字符串,该函数的功能是:统计字符串str中的单词中的单词个数,结果由变量个数,结果由变量num传回。每个单词之间都由空格隔开,并且字符串传回。每个单词之间都由空格隔开,并且字符串str开始不存在空格。开始不存在空格。例如:例如:str=how do you do,结果为:,结果为:num=4。#define N 80void fun(char*s,int*num)int i,n=0;for(i=0;i=a&sipi)q=p+i;min=pi;i+;while(qp)*q=*(q-1);q-;p0=min;循环左移算法循环左移算法1:请编写函数:请编写函数fun(),该函数的功能是:移动一维数组

12、中的内容,若数组中有,该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要个整数,要求把下标从求把下标从0到到p(pn-1)的数组元素平移到数组的最后。的数组元素平移到数组的最后。例如,一维数组中的原始内容为例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值为的值为3。移动后,一维数组中的内容应为。移动后,一维数组中的内容应为5,6,7,8,9,10,11,12,13,14,15,1,2,3,4。#include#define N 80void fun(int*w,int p,int n)int i,j,t;for(i=0;i=p

13、;i+)/*循环左移循环左移p+1次次*/t=w0;for(j=1;jn;j+)/*实现循环左移实现循环左移*/wj-1=wj;wj-1=t;2:请编写函数:请编写函数fun(),该函数的功能是:移动字符串中的内容,移动的规,该函数的功能是:移动字符串中的内容,移动的规则是把第则是把第1到第到第m个字符,平移到字符串的最后,把第个字符,平移到字符串的最后,把第m+1到最后的字符到最后的字符移到字符串的前部。移到字符串的前部。例如,字符串中原有的内容为例如,字符串中原有的内容为ABCDEFGHIJK,m的值为的值为3,移动后,字,移动后,字符串中的内容应该是符串中的内容应该是DEFGHIJKAB

14、C。#define N 80void fun(char *w,int m)int i,j;char t;for(i=1;i=m;i+)/*进行进行m次的循环左移次的循环左移*/t=w0;for(j=1;wj!=0;j+)/*从第从第2个字符开始以后的每个字符都依次前移一个字符个字符开始以后的每个字符都依次前移一个字符*/wj-1=wj;wj-1=t;/*将第将第1个字符放到最后一个字符中个字符放到最后一个字符中*/数据的折半查找算法数据的折半查找算法1:N个有序整数数列已放在一维数组中,给定下列程序中,函数个有序整数数列已放在一维数组中,给定下列程序中,函数fun()的功能是:的功能是:利用折

15、半查找算法查找整数利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值;反之,在数组中的位置。若找到,则返回其下标值;反之,则返回则返回-1。折半查找的折半查找的基本算法基本算法是:每次查找前先确定数组中待查的范围:是:每次查找前先确定数组中待查的范围:low和和high(lowhigh,查找结束。,查找结束。(题盘题盘33-2)#define N 10int fun(int a,int m)int low=0,high=N-1,mid;while(low=high)mid=(low+high)/2;if(mamid)low=mid+1;else return(mid);retur

16、n(-1);数据的插入数据的插入1:请补充:请补充main函数,该函数的功能是:把一个整数插入到一个已经按从小函数,该函数的功能是:把一个整数插入到一个已经按从小到大排序的数组中。插入后,数组仍然有序。到大排序的数组中。插入后,数组仍然有序。#define N 10main()int i,j;int n;int bbN+1=12,23,31,44,51,63,71,79,85,95;scanf(%d,&n);printf(nn=%d,n);for(i=0;iN;i+)printf(%4d,bbi);for(i=0;iN;i+)if(ni;j-)bbj=bbj-1;/*元素后移元素后移*/bbj

17、=n;/*插入元素插入元素*/break;if(i=N)bbi=n;/*如果如果n大于所有的数大于所有的数,则插入到最后则插入到最后*/for(i=0;iN+1;i+)printf(%4d,bbi);字符串前(后)加入字符串前(后)加入n个个*号号99-2:下列给定程序中函数:下列给定程序中函数fun()的功能是:在字符串的最前端加入的功能是:在字符串的最前端加入n个个*号,形成新串,并且覆盖原串。号,形成新串,并且覆盖原串。注意:字符串的长度最长允许注意:字符串的长度最长允许79。void fun(char*s,int n)char a80,*p;int i;p=s;for(i=0;i=A&

18、*(p+i)=a&*p=z)si=*p;i+;p+;si=0;34-3:假定输入的字符串中只包含字母和:假定输入的字符串中只包含字母和*号。请编写函数号。请编写函数fun(),它的功,它的功能是:删除字符串中所有的能是:删除字符串中所有的*号。在编写函数时,不得使用号。在编写函数时,不得使用C语言中提供语言中提供的字符串函数。的字符串函数。例如,若字符串中的内容为例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中,删除后,字符串中的内容则应当是的内容则应当是ABCDEFG。void fun(char*a)int i,j=0;for(i=0;ai!=0;i+)if(ai!=*)a

19、j+=ai;/*若不是要删除的字符若不是要删除的字符*则留下则留下*/aj=0;/*最后加上字符串结束符最后加上字符串结束符0*/31-3:假定输入的字符串中只包含字母和假定输入的字符串中只包含字母和*号。请编写函数号。请编写函数fun(),它的功能是:将字符串中的前导,它的功能是:将字符串中的前导*号全部删除,中间和后号全部删除,中间和后面的面的*号不删除。号不删除。例如,若字符串中的内容为例如,若字符串中的内容为*A*BC*DEF*G*,删除,删除后,字符串中的内容则应当是后,字符串中的内容则应当是A*BC*DEF*G*。void fun (char*a)int j=0;char*p=a;

20、while(*p=*)p+;/*指针指针p指向字符串第一个字母指向字符串第一个字母*/while(*p)aj+=*p;p+;/*从第一个字母开始,其后的字符都放入指针从第一个字母开始,其后的字符都放入指针a所指的字符串中所指的字符串中*/aj=0;/*在字符串最后加上结束标记符在字符串最后加上结束标记符*/81-3:假定输入的字符串中只包含字母和假定输入的字符串中只包含字母和*号。请编写函数号。请编写函数fun(),它的功能是:将字,它的功能是:将字符串尾部的符串尾部的*号全部删除,前面和中间的号全部删除,前面和中间的*号不删除。号不删除。例如,若字符串中的内容为例如,若字符串中的内容为*A*

21、BC*DEF*G*,删除后,字符串中的内容则应,删除后,字符串中的内容则应当是当是*A*BC*DEF*G。void fun(char*a)char*p;p=a;while(*p)p+;/将指针将指针p后移至串尾后移至串尾p-;/让其指向最后一个字符让其指向最后一个字符while(*p=*)p-;/从后向前找第一个不是从后向前找第一个不是*的的p+;*p=0;/在其后面加结束标志即可在其后面加结束标志即可32-3:假定输入的字符串中只包含字母和假定输入的字符串中只包含字母和*号。请编写函数号。请编写函数fun(),它的功,它的功能是:除了尾部的能是:除了尾部的*号之外,将字符串中其他号之外,将字

22、符串中其他*号全部删除。形参号全部删除。形参p已指向已指向字符串中最后一个字母。在编写函数时,不得使用字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。语言的字符串函数。例如,若字符串中的内容为例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中,删除后,字符串中的内容应当是的内容应当是ABCDEFG*。void fun(char*a,char*p)char*q=a;int j=0;while(*q!=0&qp)if(*q!=*)aj+=*q;/*将将p以前所有不是以前所有不是*号的字符保留下来号的字符保留下来*/q+;while(*q)aj+=*q;q+;/*将将

23、p以后的所有以后的所有*号保留下来号保留下来*/aj=0;/*在字符串最后加上结束标记位在字符串最后加上结束标记位*/83-3:假定输入的字符串中只包含字母和假定输入的字符串中只包含字母和*号。请编写函数号。请编写函数fun(),它的功,它的功能是:只删除字符串前导和尾部的能是:只删除字符串前导和尾部的*号,串中字母之间的号,串中字母之间的*号都不删除。号都不删除。形参形参n给出了字符串的长度,形参给出了字符串的长度,形参h给出了字符串中前导给出了字符串中前导*号的个数,形参号的个数,形参e给出了字符串中最后给出了字符串中最后*号的个数。在编写函数时,不得使用号的个数。在编写函数时,不得使用C

24、语言提供的语言提供的字符串函数。字符串函数。例如,若字符串中的内容为例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中,删除后,字符串中的内容则应当是的内容则应当是A*BC*DEF*G。void fun (char*a,int n,int h,int e)int i,j=0;for(i=h;in-e;i+)aj+=ai;/*第一个字母和最后一个字母之间的字符全不删除第一个字母和最后一个字母之间的字符全不删除*/aj=0;/*在字符串最后加上结束标记在字符串最后加上结束标记*/33-3.假定输入的字符串中只包含字母和假定输入的字符串中只包含字母和*号。请编写函数号。请编写函数fu

25、n(),它的功能是:除,它的功能是:除了串的前导和尾部的了串的前导和尾部的*号之外,将字符串中其他号之外,将字符串中其他*号全部删除。形参号全部删除。形参r已指向字符已指向字符串中第一个字母,形参串中第一个字母,形参v已经指向串的最后一个字母。在编写函数时,不得使用已经指向串的最后一个字母。在编写函数时,不得使用C语言的字符串函数。语言的字符串函数。void fun(char*s,char*r,char*v)char*p;int i=0;p=s;while(pr)si+=*p;p+;/*复制第一个字母之前的所有复制第一个字母之前的所有*/while(pm)sn-i+m=0;/*第三步第三步:截

26、掉多于的截掉多于的*,用加结束标志用加结束标志 的方式实现的方式实现*/84-3 84-3 假定输入的字符串中只包含字母和假定输入的字符串中只包含字母和*号号,编写函数编写函数fun,fun,功功能是能是:使字符串中前导使字符串中前导*号不得多于号不得多于m m个,若多于个,若多于m m个,则个,则删除多余的删除多余的*号;若少于或等于号;若少于或等于m m个,则什么也不做;串个,则什么也不做;串中间和尾部的中间和尾部的*号不删除。号不删除。解题思路解题思路:1.1.首先计算串的前导首先计算串的前导*的个数的个数,计数计数;2.2.根据计数结果判断对根据计数结果判断对*的截取的截取;3.3.将

27、剩余字符将剩余字符(从第一个字母开始从第一个字母开始)复制到字符串中复制到字符串中,最后最后加结束标志加结束标志0.0.void fun(char*s,int m)int k=0,i=0;char*p=s;while(*p=*)k+;p+;/*第第1步步:计算前导计算前导*的个数的个数,用用k计数计数*/p=s;/*重新确定重新确定p指针的位置指针的位置*/if(km)p=s+k-m;/*第第2步:如果多于步:如果多于m,p向后移动向后移动k-m位置位置*/while(*p!=0)si=*p;i+;p+;/*第第3步步:从从p开始复制开始复制*/si=0;/*最后加结束标志即可最后加结束标志即

28、可*/题盘(题盘(11道)道)前导或后续及中间*题目:31-3、32-3、33-3、34-3、35-3、81-3、82-3、83-3、84-3、85-3、99-2排序排序选择法冒泡法题盘分布题盘分布第第2讲:讲:8道题道题第第4讲:选择讲:选择 5道道第第5讲:循环讲:循环 70道道第第6讲:数组讲:数组 63道道第第7讲:函数讲:函数 12道道第第8讲:讲:2道道第第9讲:指针讲:指针 77道道第第10讲:结构体讲:结构体 21道道第第12讲:文件讲:文件 9道道第第13讲:链表讲:链表 15道道删除删除“*”:11道道共共293道题目。道题目。剩余剩余7道题目比较简单。道题目比较简单。10-2,23-1,25-3,51-2,61-2,93-2;69-2此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁