《计算机二级语言上机题型总结.docx》由会员分享,可在线阅读,更多相关《计算机二级语言上机题型总结.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结运算机二级 C语言上机题型总结一)“ *”问题1、将字符串中的前导 * 号全部删除,中间和后面的 * 号不删除。void funchar *achar *p=a;while*p= =* p+; for ; *p.= 0;p+,a+*a=*p;*a= 0;2、只删中间 * int i;fori=0;ai= =* ;i+ for ;hp;h+if*h.=* ai+=*h;for ;*p;p+ ai+=*p;ai= 0;3、只删尾 *可编辑资料 - - - 欢迎下载精品名师归纳总结while*a.= 0 a+;a-;while*a= =* a-;*a+1= 0;4、只留前 * int
2、 i , j=0;fori=0;a=* ;i+; j=i;for ;a;i+ifa.= *aj+=ai;aj= 0;5、只留中间 * int i,j=0;fori=h;in-e;i+ aj+=ai;aj= 0;6、只留尾 * char *t=a;可编辑资料 - - - 欢迎下载精品名师归纳总结for ; tn 个,删余外的 * 。* 个数nwhile*pai=*p+k-n; i+;p+ai= 0;可编辑资料 - - - 欢迎下载精品名师归纳总结(二)移动问题1、如一维数组中有 n 个整数,要求把下标从 p 到 n-1 (p=n-1)的元素平移到数组前面。int i,j,t; fori=p;i=
3、0;j-wj+1=wj; w0=t;2、把下标从 0 到 p(p=n-1)的元素平移到数组最终。int i,j,t;fori=0;i=p;i+t=w0;forj=1;jn;j+wj-1=wj; wj-1=t;3、把字符串 str中的字符向前移动,原先第 1 个字符放串尾,结果仍储存在原串中。ch=str0; fori=0;stri+1;i+可编辑资料 - - - 欢迎下载精品名师归纳总结stri=stri+1; stri=ch;4、移动字符串中的内容,把第 1 到第 m个字符平移到串后,把第 m+1到后移到前。void funchar *w, int mint i, j; char t;for
4、i=1,i=m;i+ t=w0;forj=1;wj.= 0;j+ wj-1=wj;wj-1=t;(三)排序法1、冒泡法fori=1;in;i+forj=0;jaj+1t=aj;aj=aj+1;aj+1=aj;2、挑选法可编辑资料 - - - 欢迎下载精品名师归纳总结fori=0;in-1;i+p=i; forj=i+1;jaj p=j; ifp.=i t=ai;ai=ap;ap=t;3、插入法fori=1;it&j=0;j- aj+1=aj;aj+1=t;(四) Fibonacci问题1、求 Fibonacci数列中小于 t 的最大的一个数,结果由函数返回。int funint tint a=
5、1,b=1,c=0,i; do可编辑资料 - - - 欢迎下载精品名师归纳总结c=a+b; a=b; b=c;whilect; c=a;return c;2、用递归算法运算数列中第 n 项的值。long funint gswichgcase 0:return 0; switchgcase1:case2:return 1;returnfung-1+fung-2; 五 素数问题1、将大于整数 m且紧靠 m的 k 个非素数存入所指的数组中。void funint m,int k,int xxint i,j,n; fori=m+1,n=0;nk;i+可编辑资料 - - - 欢迎下载精品名师归纳总结fo
6、rj=2;ji;j+ifi%j= =0xxn+=i;break;2、小于或等于 lim 的全部素数放在 aa 数组中,该函数返回所求出的素数个数。int funint lim, int aaMAXint i,j,k=0; fori=2;i=lim;i+forj=2;j=iaak+=i;return k;3、将全部大于 1 小于整数 m的非素数存入 xx 数组中,个数通过 k 传回。void funint m,int *k,int xxint i,j,n=0; fori=4;im;i+forj=2;ji;j+可编辑资料 - - - 欢迎下载精品名师归纳总结ifi%j= =0 break; ifj
7、ixxn+=i;*k=n;或int i, j,t,n=0; fori=2;im;i+ t=1;forj=2;ji;j+ ifi%j=0t=0;break; ift=1 xxn+=I;*k=n;(六)删除相同数int funint a,int n int i, j=1; fori=1;in;i+ifaj-1.=ai aj+=ai;return j;或可编辑资料 - - - 欢迎下载精品名师归纳总结 int i,t,j=0;t=a0;fori=1;in;i+ ift=ai;elseaj+=t;t=ai;aj+=t; return j;(七)统计字符个数,单词个数。1、按 0到 9统计一个字符串中的
8、奇数数字字符各自显现的次数,结果储存在数组 num中。void funchar *tt, int num int i, j; int bb10;char *p=tt; fori=0;i=0&*p=9 bb*p-0+; p+;fori=1,j=0;i10;i=i+2,j+ numj=bbi;2、str全部由小写字母和空格字符组成的字符串, num传入字符串长度。 统计单词个数。void funchar *s, int *num int I, n=0; fori=0;i=a&ssi= z&si+1= = | si+1= 0n+;*num=n;3、从 a到 z统计一个字符串中全部字母字符各自显现的次
9、数,结果存在数组 alf中。void fun char *tt, int alf int i;char *p=tt; fori=0;i=A&*p=a&*p=zalf*p-a+;p+;4、str字符序列由字符 0 和 1 组成。查找 0 字符连续显现的最长长度,如有几个 0 字符长度相同,只记录最终 1 个 0 字符串相关信息,通过m和 k 返回最长 0 字符长度和其下标。void funchar *str, int *m, int *k int i, j=0; int bbN;char *p=str;*m=0;*k=0; fori=0;iN;i+bbi=0;i=0;while*p+iif*p+
10、i=0可编辑资料 - - - 欢迎下载精品名师归纳总结 bbj+;i+; else j+;i+; if*m=bbj *m=bbj; *k=i-1;5、统计在 tt字符串中” a”到” z”26 个字母各自显现的次数,并依次放在pp所指数组中。void fun char *tt,int ppint i; fori=0;i=a&*tt= zpp*tt-a+;6、统计一个长度为 n 的字符串在另一个字符串中显现的次数。int funchar *str, char *substrint n;char *p,*r;可编辑资料 - - - 欢迎下载精品名师归纳总结n=0;while*strp=str; r
11、=substr; while*rif*r=*pr+;p+;else break;if*r= 0 n+; str+;return n;7、求出 ss 所指字符串中指定字符的个数,并返回此值。int fun char *ss, char c int i=0;for ;*ss.= 0;ss+ if*ss=ci+;return i;可编辑资料 - - - 欢迎下载精品名师归纳总结8、统计一个长度为 2 的字符串在另一个字符串中显现的次数。int fun char *str, char *substrint i,j=0;fori=0;stri+1.= 0;i+ ifstri=substr0&stri+1
12、=substr1j+;return j;(八)进制转换1、把 str字符串转换成任意进制的数。x :原进制。 y:要转换成的进制。int funchar *str, int x, int y int sum; int i=0;char *p=str;fori=0;iN;i+ xxi=0;sum=*p- 0; p+;while*p sum=sum*x+*p- 0;p+; i=0;可编辑资料 - - - 欢迎下载精品名师归纳总结whilesum.=0 xxi=sum%y; sum=sum/y; i+;return i;注:(1) )将 x 转换成 10 进制: sum=sum*x+*p-0;(2)
13、 )将 10 进制转换成 y: sum%y 得到 y 进制数的最低位。sum/y得到 y 进制数的次低位。2、str字符串由 0和 1组成。转换成十进制数。int funchar *str int n;char *p=str;n=*p- 0; p+;while*p n=n*2+*p-0;p+;return n;可编辑资料 - - - 欢迎下载精品名师归纳总结(九)比较字符串长度1、比较两个字符串的长度,函数返回较短的字符串。char *funchar *s, char *tint i,j;fori=0;si.= 0;i+;forj=0;tj.= 0;j+; ifi=jreturn s;else
14、return t;2、从传入的 num个字符中找出最长的一个字符串,通过形参指针max传回该串的址。funchar *a81, int num,char *max int i=0;max=a0; fori=0;inum;i+ifstrlenmaxstrlenai max=ai;return max;(十)最大公约数,最小公倍数可编辑资料 - - - 欢迎下载精品名师归纳总结1、int funint a, int b int r,t;ifabt=a;a=b;b=t; r=a%b;whiler.=0 a=b; b=r; r=a%b returnb;2、输入两整数 m和 n,求最大公约数,最小公倍数。whileb.=0t=a%b; a=b; b=t;printf“%d”, ”%d”,a, n*m/a;注:(1) )最大公约数:如 b/a 的非零余数能整除 a。(2) )最小公倍数:两数乘积除以最大公约数。可编辑资料 - - - 欢迎下载