计算机二级C语言上机题型总结(一)“******”问题1、将字符串中的前导*号全部删除,中间和后面的*号不删除。voidfun(char*a){char*p=a;while(*p==’*’)p++;for(;*p!=’\0’;p++,a++)*a=*p;*a=’\0’;}2、只删中间*#include
voidmain(){chara[81]="*****plpkj**123****mmkk***lkj***";puts(a);inti=0;char*h=a,*p=a;while(*p!='\0')p++;do{p--;}while(*p=='*');for(i=0;a[i]=='*';i++)h++;for(;hvoidmain(){chara[81]="*****plpkj**123****mmkk***lkj***";puts(a);char*p=a;while(*p!='\0')p++;p--;while(*p=='*')p--;*(p+1)='\0';puts(a);}(二)移动问题1、若一维数组中有n个整数,要求把下标从p到n-1(p<=n-1)的元素平移到数组前面。inti,j,t;for(i=p;i<=n-1;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}2、把下标从0到p(p<=n-1)的元素平移到数组最后。inti,j,t;for(i=0;i<=p;i++){t=w[0];for(j=1;j2)return(fun(g-1)+fun(g-2));}(四)素数问题1、将大于整数m且紧靠m的k个非素数存入所指的数组中。voidfun(intm,intk,intxx[]){inti,j,n;for(i=m+1,n=0;n=i)aa[k++]=i;}returnk;}3、将所有大于1小于整数m的非素数存入xx数组中,个数通过k传回。voidfun(intm,int*k,intxx[]){inti,j,n=0;for(i=4;i=’0’&&*p<=’9’)bb[*p-‘0’]++;p++;}for(i=1,j=0;i<10;i=i+2,j++)num[j]==bb[i];}2、str全部由小写字母和空格字符组成的字符串,num传入字符串长度。统计单词个数。voidfun(char*s,int*num){intI,n=0;for(i=0;i<*num;i++){if(s[i]>=’a’&&ss[i]<=’z’&&(s[i+1]==’’||s[i+1]==’0’))n++;}*num=n;}3、从’a’到’z’统计一个字符串中所有字母字符各自出现的次数,结果存在数组alf中。voidfun(char*tt,intalf[]){inti;char*p=tt;for(i=0;i<26;i++)alf[i]=0;while(*p){if(*p>=’A’&&*p<=’Z’)*p+=32;if(*p>=’a’&&*p<=’z’)alf[*p-‘a’]++;p++;}}4、str字符序列由字符0和1组成。查找0字符连续出现的最长长度,若有几个0字符长度相同,只记录最后1个0字符串相关信息,通过m和k返回最长0字符长度和其下标。voidfun(char*str,int*m,int*k){inti,j=0;intbb[N];char*p=str;*m=0;*k=0;for(i=0;i