计算机二级C语言上机题型总结新.docx

上传人:b****4 文档编号:24488322 上传时间:2023-05-28 格式:DOCX 页数:13 大小:17.49KB
下载 相关 举报
计算机二级C语言上机题型总结新.docx_第1页
第1页 / 共13页
计算机二级C语言上机题型总结新.docx_第2页
第2页 / 共13页
计算机二级C语言上机题型总结新.docx_第3页
第3页 / 共13页
计算机二级C语言上机题型总结新.docx_第4页
第4页 / 共13页
计算机二级C语言上机题型总结新.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

计算机二级C语言上机题型总结新.docx

《计算机二级C语言上机题型总结新.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言上机题型总结新.docx(13页珍藏版)》请在冰豆网上搜索。

计算机二级C语言上机题型总结新.docx

计算机二级C语言上机题型总结新

计算机二级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(;h

if(*h!

='*')a[i++]=*h;

for(;*p;p++)

a[i++]=*p;

a[i]='\0';

puts(a);

}

3、只删尾*

#include

voidmain()

{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;j

    w[j-1]=w[j];

  w[j-1]=t;

}

3、把字符串str中的字符向前移动,原来第1个字符放串尾,结果仍保存在原串中。

ch=str[0];

for(i=0;str[i+1];i++)

  str[i]=str[i+1];

str[i]=ch;

4、移动字符串中的内容,把第1到第m个字符平移到串后,把第m+1到后移到前。

voidfun(char*w,intm)

{inti,j;

 chart;

 for(i=1,i<=m;i++)

 {t=w[0];

for(j=1;w[j]!

=’\0’;j++)

 w[j-1]=w[j];

 w[j-1]=t;

}

}

 (三)Fibonacci问题

1、求Fibonacci数列中小于t的最大的一个数,结果由函数返回。

intfun(intt)

{ inta=1,b=1,c=0,i;

 do

{c=a+b;a=b;b=c;}

while(c

c=a;

returnc;

}

2、用递归算法计算数列中第n项的值。

longfun(intg)

{

if(g==1)return1;

 if(g==2)return1;

if(g>2)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

    for(j=2;j

       if(i%j==0)

       {xx[n++]=i;break;}

}

2、小于或等于lim的所有素数放在aa数组中,该函数返回所求出的素数个数。

intfun(intlim,intaa[MAX])

{ inti,j,k=0;

  for(i=2;i<=lim;i++)

    {for(j=2;j

   if(i%j==0)break;

   if(j>=i) aa[k++]=i;

}

returnk;

}

3、将所有大于1小于整数m的非素数存入xx数组中,个数通过k传回。

voidfun(intm,int*k,intxx[])

{inti,j,n=0;

 for(i=4;i

{for(j=2;j

  if(i%j==0)break;

  if(j

}

*k=n;

}

{inti,j,t,n=0;

 for(i=2;i

 {t=1;

 for(j=2;j

if(i%j==0)

 {t=0;break;}

if(t==1)xx[n++]=I;}

 *k=n;

}

(五)删除相同数

intfun(inta[],intn)

{inti,j=1;

 for(i=1;i

if(a[j-1]!

=a[i])

a[j++]=a[i];

 returnj;

}

{inti,t,j=0;

 t=a[0];

 for(i=1;i

  if(t==a[i])

     ;

  else

  {

a[j++]=t;

t=a[i];

}

a[j++]=t;

returnj;

}

(七)统计字符个数,单词个数。

1、按‘0’到‘9’统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。

voidfun(char*tt,intnum[])

{inti,j;

intbb[10];

 char*p=tt;

 for(i=0;i<10;i++)

 {num[i]=0;

 bb[i]=0;}

while(*p)

{if(*p>=’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

  bb[i]=0;

i=0;

while(*(p+i))

{

 if(*(p+i)==’0’)

{bb[j]++;i++;}

 else{j++;i++;}

 if(*m<=bb[j])

 {*m=bb[j];*k=i-1;}

}

}

5、统计在tt字符串中”a”到”z”26个字母各自出现的次数,并依次放在pp所指数组中。

voidfun(char*tt,intpp[])

{

inti;

for(i=0;i<26;i++)

 pp[i]=0;

for(;*tt!

=’\0’;tt++)

if(;*tt>=’a’&&*tt<=’z’)

 pp[*tt-’a’]++;

}

 6、统计一个长度为n的字符串在另一个字符串中出现的次数。

intfun(char*str,char*substr)

{ intn;

 char*p,*r;

 n=0;

 while(*str)

 {p=str;

 r=substr;

 while(*r)

    if(*r==*p)

    {r++;p++;}

    elsebreak;

    if(*r==’\0’) n++;

    str++;

}

returnn;

}

7、求出ss所指字符串中指定字符的个数,并返回此值。

intfun(char*ss,charc)

{inti=0;

 for(;*ss!

=’\0’;ss++)

  if(*ss==c)

    i++;

returni;

}

8、统计一个长度为2的字符串在另一个字符串中出现的次数。

intfun(char*str,char*substr)

{inti,j=0;

 for(i=0;str[i+1]!

=’\0’;i++)

  if(str[i]==substr[0]&&str[i+1]==substr[1])

    j++;

  returnj;

}

(七)进制转换

1、把str字符串转换成任意进制的数。

  x:

原进制;y:

要转换成的进制。

intfun(char*str,intx,inty)

{intsum;

 inti=0;

 char*p=str;

 for(i=0;i

xx[i]=0;

 sum=*p-‘\0’;

 p++;

 while(*p)

{sum=sum*x+*p-‘0’;

p++; }

i=0;

while(sum!

=0)

{xx[i]=sum%y;

 sum=sum/y;

 i++;}

returni;

}

注:

(1)      将x转换成10进制:

sum=sum*x+*p-‘0’;

(2)      将10进制转换成y:

sum%y得到y进制数的最低位。

                          sum/y 得到y进制数的次低位。

2、str字符串由‘0’和‘1’组成。

转换成十进制数。

intfun(char*str)

{intn;

 char*p=str;

 n=*p-‘0’;

 p++;

 while(*p)

 {n=n*2+*p-‘0’;

 p++;}

 returnn;

}

(八)比较字符串长度

1、比较两个字符串的长度,函数返回较短的字符串。

char*fun(char*s,char*t)

{inti,j;

 for(i=0;s[i]!

=’\0’;i++);

 for(j=0;t[j]!

=’\0’;j++);

  if(i<=j)

    returns;

  else

    returnt;

}

2、从传入的num个字符中找出最长的一个字符串,通过形参指针max传回该串地址。

fun(char(*a)[81],intnum,char*max)

{inti=0;

 max=a[0];

 for(i=0;i

  if(strlen(max)

     max=a[i];

 returnmax;

}

 (九)最大公约数,最小公倍数

1、intfun(inta,intb)

{intr,t;

 if(a

  {t=a;a=b;b=t;}

  r=a%b;

 while(r!

=0)

{a=b;b=r;r=a%b}

return(b);

}

2、输入两整数m和n,求最大公约数,最小公倍数。

while(b!

=0)

{t=a%b;a=b;b=t;}

printf(“%d”,”%d”,a,n*m/a);

 注:

(1)最大公约数:

若b/a的非零余数能整除a。

(2)最小公倍数:

两数乘积除以最大公约数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1