欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (精品)上机考试常有算法(不含计算问题).ppt

    • 资源ID:85523933       资源大小:158.01KB        全文页数:36页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (精品)上机考试常有算法(不含计算问题).ppt

    全国二级C语言上机典型题型运用运用/和和%分离整数的各位分离整数的各位1:请编写函数:请编写函数fun,其功能是:将两个两位数的正整数,其功能是:将两个两位数的正整数a、b合并形成一个整数放在合并形成一个整数放在c中。合并的方式是:将中。合并的方式是:将a数的十位和数的十位和个位数依次放在个位数依次放在c数个位和十位上,数个位和十位上,b数的十位和个位数依次数的十位和个位数依次放在放在c数的百位和千位上。数的百位和千位上。例如,当例如,当a=16,b=35,调用该函数后,调用该函数后,c=5361。#includevoid fun(int a,int b,long*c)*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;2:数组:数组xxN保存着一组位数的无符号正整数,其元素的个数通过变量保存着一组位数的无符号正整数,其元素的个数通过变量num传入函数传入函数fun()。请补充函数。请补充函数fun(),该函数的功能是:从数组,该函数的功能是:从数组xx中找出中找出个位和百位的数字相等个位和百位的数字相等的所有无的所有无符号整数,结果保存在数组符号整数,结果保存在数组yy中,其个数由函数中,其个数由函数fun()返回。返回。例如:当例如:当xx8=135,78,72,32,222,424,333,141,541时,时,bb6=787,232,222,424,333,141。#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 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)/*只要下标中有一个为只要下标中有一个为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:请请补补充充main函函数数,该该函函数数的的功功能能是是:输输入入两两个个正正整整数数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);判断素数判断素数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+)/*判断一个数是否为素数判断一个数是否为素数*/if(i%j=0)xxn+=i;/*如果不是素数,放入数组如果不是素数,放入数组xx中中*/break;/*并跳出本层循环,判断下一个数并跳出本层循环,判断下一个数*/求串长(指针数组存储串)求串长(指针数组存储串)char a80;int n=0;while(an!=0)/*(an)或an!=0*/n+;/*n 即为串长*/char a80;int n=0;for(;an;n+);/*(an)或an!=0*/*n 即为串长*/求串长求串长(指针变量指向串)指针变量指向串)char*a;int n=0;gets(a);while(*a!=0)/*(*a)或*a!=0 */n+;a+;/*n 即为串长*/char*a;int n=0;gets(a);for(;*a;a+)n+;/*a!=0或*a!=0*/*n 即为串长*/字符串逆序存放字符串逆序存放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,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,则调用该函数后,串中的内容变为,则调用该函数后,串中的内容变为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中。注意:不能使用字符串库中。注意:不能使用字符串库函数。函数。例如:输入例如:输入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(),该函数的功能是:统计字符串,该函数的功能是:统计字符串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&si=z&(si+1=|si+1=0)n+;*num=n;3:请补充函数:请补充函数fun(),该函数可以统计一个长度为,该函数可以统计一个长度为n的字符串在另一个字符串的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:中出现的次数。例如,假定输入的字符串为:asd ascasdfg asd as asd mlosd,子字符串为子字符串为asd,则应输出,则应输出4。20-3算法算法1:int fun(char*str,char*substr)int n;char*p,*r;n=0;while(*str)p=str;r=substr;while(*r)if(*r=*p)r+;p+;else break;if(*r=0)n+;str+;return n;算法算法2:(好理解)(好理解)int i=0,k=0,j=0,n;n=strlen(str);while(ipi)q=p+i;min=pi;i+;while(qp)*q=*(q-1);q-;p0=min;循环左移算法循环左移算法1:请编写函数:请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有,该函数的功能是:移动一维数组中的内容,若数组中有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;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,移动后,字,移动后,字符串中的内容应该是符串中的内容应该是DEFGHIJKABC。#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()的功能是:的功能是:利用折半查找算法查找整数利用折半查找算法查找整数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);return(-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=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&*(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!=*)aj+=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;while(*p=*)p+;/*指针指针p指向字符串第一个字母指向字符串第一个字母*/while(*p)aj+=*p;p+;/*从第一个字母开始,其后的字符都放入指针从第一个字母开始,其后的字符都放入指针a所指的字符串中所指的字符串中*/aj=0;/*在字符串最后加上结束标记符在字符串最后加上结束标记符*/81-3:假定输入的字符串中只包含字母和假定输入的字符串中只包含字母和*号。请编写函数号。请编写函数fun(),它的功能是:将字,它的功能是:将字符串尾部的符串尾部的*号全部删除,前面和中间的号全部删除,前面和中间的*号不删除。号不删除。例如,若字符串中的内容为例如,若字符串中的内容为*A*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(),它的功,它的功能是:除了尾部的能是:除了尾部的*号之外,将字符串中其他号之外,将字符串中其他*号全部删除。形参号全部删除。形参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+;/*将将p以后的所有以后的所有*号保留下来号保留下来*/aj=0;/*在字符串最后加上结束标记位在字符串最后加上结束标记位*/83-3:假定输入的字符串中只包含字母和假定输入的字符串中只包含字母和*号。请编写函数号。请编写函数fun(),它的功,它的功能是:只删除字符串前导和尾部的能是:只删除字符串前导和尾部的*号,串中字母之间的号,串中字母之间的*号都不删除。号都不删除。形参形参n给出了字符串的长度,形参给出了字符串的长度,形参h给出了字符串中前导给出了字符串中前导*号的个数,形参号的个数,形参e给出了字符串中最后给出了字符串中最后*号的个数。在编写函数时,不得使用号的个数。在编写函数时,不得使用C语言提供的语言提供的字符串函数。字符串函数。例如,若字符串中的内容为例如,若字符串中的内容为*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.假定输入的字符串中只包含字母和假定输入的字符串中只包含字母和*号。请编写函数号。请编写函数fun(),它的功能是:除,它的功能是:除了串的前导和尾部的了串的前导和尾部的*号之外,将字符串中其他号之外,将字符串中其他*号全部删除。形参号全部删除。形参r已指向字符已指向字符串中第一个字母,形参串中第一个字母,形参v已经指向串的最后一个字母。在编写函数时,不得使用已经指向串的最后一个字母。在编写函数时,不得使用C语言的字符串函数。语言的字符串函数。void fun(char*s,char*r,char*v)char*p;int i=0;p=s;while(pr)si+=*p;p+;/*复制第一个字母之前的所有复制第一个字母之前的所有*/while(pn)ai-k+n=0;/*第三步第三步:截掉多于的截掉多于的*,用加结束标志用加结束标志 的方式实现的方式实现*/84-3 84-3 假定输入的字符串中只包含字母和假定输入的字符串中只包含字母和*号号,编写函数编写函数fun,fun,功功能是能是:使字符串中前导使字符串中前导*号不得多于号不得多于m m个,若多于个,若多于m m个,则个,则删除多余的删除多余的*号;若少于或等于号;若少于或等于m m个,则什么也不做;串个,则什么也不做;串中间和尾部的中间和尾部的*号不删除。号不删除。解题思路解题思路:1.1.首先计算串的前导首先计算串的前导*的个数的个数,计数计数;2.2.根据计数结果判断对根据计数结果判断对*的截取的截取;3.3.将剩余字符将剩余字符(从第一个字母开始从第一个字母开始)复制到字符串中复制到字符串中,最后最后加结束标志加结束标志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;/*最后加结束标志即可最后加结束标志即可*/题盘(题盘(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

    注意事项

    本文((精品)上机考试常有算法(不含计算问题).ppt)为本站会员(hwp****526)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开