计算机二级上机考试常有算法(不含计算问题).ppt
《计算机二级上机考试常有算法(不含计算问题).ppt》由会员分享,可在线阅读,更多相关《计算机二级上机考试常有算法(不含计算问题).ppt(35页珍藏版)》请在冰豆网上搜索。
![计算机二级上机考试常有算法(不含计算问题).ppt](https://file1.bdocx.com/fileroot1/2022-10/20/2f22ab53-0cf5-4dea-ba9d-59df81f35072/2f22ab53-0cf5-4dea-ba9d-59df81f350721.gif)
全国二级C语言上机典型题型运用运用/和和%分离整数的各位分离整数的各位1:
请编写函数:
请编写函数fun,其功能是:
将两个两位数的正整数,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在合并形成一个整数放在c中。
合并的方式是:
将中。
合并的方式是:
将a数的十位和数的十位和个位数依次放在个位数依次放在c数个位和十位上,数个位和十位上,b数的十位和个位数依次数的十位和个位数依次放在放在c数的百位和千位上。
数的百位和千位上。
例如,当例如,当a=16,b=35,调用该函数后,调用该函数后,c=5361。
#includevoidfun(inta,intb,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#defineN1000intfun(intxx,intbb,intnum)inti,n=0;intg,b;for(i=0;i=0;-i)d=ci;printf(%c,bd);printf(n);4:
请补充函数:
请补充函数fun(),该函数的功能是:
把一个,该函数的功能是:
把一个整数转换成字符串整数转换成字符串,并倒序保存,并倒序保存在字符数组在字符数组str中。
例如:
当中。
例如:
当n=13572468时,时,str=86427531。
#include#include#defineN80charstrN;voidfun(longintn)inti=0;while(n0)stri=n%10+0;n/=10;i+;stri=0;数组特殊位置元素的确定数组特殊位置元素的确定1:
下列程序定义了:
下列程序定义了NN的二维数组,并在主函数中赋值。
请编写函数的二维数组,并在主函数中赋值。
请编写函数fun(),函数的功能,函数的功能是:
求出数组周边元素的平方和并作为函数值返回给主函数中的是:
求出数组周边元素的平方和并作为函数值返回给主函数中的s。
#defineN5intfun(intwN)inti,j,k=0;ints=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;/*将周边元素求平方和将周边元素求平方和*/returns;/*返回周边元素的平方和返回周边元素的平方和*/2:
下列程序定义了NN的二维数组,并在主函数中自动赋值。
请编写函数fun(intaN,intn),该函数的功能是:
使数字右(左)上半三角元素中的值乘以m。
#defineN5intfun(intaN,intm)inti,j;for(i=0;iN;i+)for(j=i;jN;j+)aij=aij*m;最大公约数与最小公倍数最大公约数与最小公倍数1:
请请补补充充main函函数数,该该函函数数的的功功能能是是:
输输入入两两个个正正整整数数m和和n,求这两个数的最大公约和最小公倍数。
,求这两个数的最大公约和最小公倍数。
(题盘题盘34-283-2)#includemain()inta,b,n,m,t;printf(nInputtwonumbers:
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(greatestcommondivisor:
%dn,a);printf(leastcommonmultiple:
%dn,n*m/a);判断素数判断素数1:
请编写一个函数:
请编写一个函数voidfun(intm,intk,intxx),该函数的功能是:
,该函数的功能是:
将大于整数将大于整数m且紧靠且紧靠m的的k个非素数存入所指的数组中。
个非素数存入所指的数组中。
例如,若输入例如,若输入15,5,则应输出,则应输出16,18,20,21,22。
voidfun(intm,intk,intxx)inti,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;/*并跳出本层循环,判断下一个数并跳出本层循环,判断下一个数*/字符串逆序存放字符串逆序存放1:
请补充函数:
请补充函数fun(),该函数的功能是:
把从主函数中输入的字符串,该函数的功能是:
把从主函数中输入的字符串str2倒置后倒置后接在字符串接在字符串str1后面。
后面。
例如:
例如:
str1=Howdo,str2=?
oduoy,结果输出:
结果输出:
Howdoyoudo?
。
#defineN40voidfun(char*str1,char*str2)inti=0,j=0,k=0,n;charch;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#defineN81voidfun(char*s)inti=0,n=strlen(s);chart;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#defineN1000voidfun(char*tt,intnum)inti,j;intbb10;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=howdoyoudo,结果为:
,结果为:
num=4。
#defineN80voidfun(char*s,int*num)inti,n=0;for(i=0;i=a&sipi)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#defineN80voidfun(int*w,intp,intn)inti,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。
#defineN80voidfun(char*w,intm)inti,j;chart;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)#defineN10intfun(inta,intm)intlow=0,high=N-1,mid;while(low=high)mid=(low+high)/2;if(mamid)low=mid+1;elsereturn(mid);return(-1);数据的插入数据的插入1:
请补充:
请补充main函数,该函数的功能是:
把一个整数插入到一个已经按从小函数,该函数的功能是:
把一个整数插入到一个已经按从小到大排序的数组中。
插入后,数组仍然有序。
到大排序的数组中。
插入后,数组仍然有序。
#defineN10main()inti,j;intn;intbbN+1=12,23,31,44,51,63,71,79,85,95