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

上传人:b****2 文档编号:2227702 上传时间:2023-05-02 格式:DOCX 页数:17 大小:17.66KB
下载 相关 举报
计算机二级C语言上机题型总结.docx_第1页
第1页 / 共17页
计算机二级C语言上机题型总结.docx_第2页
第2页 / 共17页
计算机二级C语言上机题型总结.docx_第3页
第3页 / 共17页
计算机二级C语言上机题型总结.docx_第4页
第4页 / 共17页
计算机二级C语言上机题型总结.docx_第5页
第5页 / 共17页
计算机二级C语言上机题型总结.docx_第6页
第6页 / 共17页
计算机二级C语言上机题型总结.docx_第7页
第7页 / 共17页
计算机二级C语言上机题型总结.docx_第8页
第8页 / 共17页
计算机二级C语言上机题型总结.docx_第9页
第9页 / 共17页
计算机二级C语言上机题型总结.docx_第10页
第10页 / 共17页
计算机二级C语言上机题型总结.docx_第11页
第11页 / 共17页
计算机二级C语言上机题型总结.docx_第12页
第12页 / 共17页
计算机二级C语言上机题型总结.docx_第13页
第13页 / 共17页
计算机二级C语言上机题型总结.docx_第14页
第14页 / 共17页
计算机二级C语言上机题型总结.docx_第15页
第15页 / 共17页
计算机二级C语言上机题型总结.docx_第16页
第16页 / 共17页
计算机二级C语言上机题型总结.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

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

一)“******”问题

1、将字符串中的前导*号全部删除,中间和后面的*号不删除。

voidfun(char*a)

{   

char*p=a;

while(*p==’*’) p++;

for(;*p!

=’\0’;p++,a++)

      *a=*p;

      *a=’\0’;

}

 

2、只删中间*  

inti;

for(i=0;a[i]==’*’;i++)

 for(;h

 if(*h!

=’*’)

 a[i++]=*h;

 for(;*p;p++)

 a[i++]=*p;

 a[i]=’\0’;

 

3、只删尾*

while(*a!

=’\0’)

 a++;

a--;

while(*a==’*’)

  a--;

*(a+1)=’\0’;

 

4、只留前*   

inti,j=0;

for(i=0;a=’*’;i++);

j=i;

for(;a;i++)

if(a!

=’*’)

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

a[j]=’\0’;

 

5、只留中间*

inti,j=0;

for(i=h;i

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

 a[j]=’\0’;

 

6、只留尾*

char*t=a;

for(;t<=p;t++)

 if(*t!

=’*’)

 *(a++)=*t;

for(;t!

=’\0’;t++)

 *(a++)=*t;

 *a=’\0’;

 

7、*个数>n个,删多余的*;*个数<=n个,不做任何处理。

inti=0,k=0;

char*p,*t;

p=t=a;

while(*t==’*’)

 {

k++;

t++;

}

if(k>n)

 {

while(*p)

 {a[i]=*(p+k-n);

 i++;p++}

a[i]=’\0’;

}

 

(二)移动问题

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;

}

}

 

(三)排序法

1、冒泡法

for(i=1;i

for(j=0;j

if(a[j]>a[j+1])

 {t=a[j];a[j]=a[j+1];a[j+1]=a[j];}

2、选择法

for(i=0;i

{

 p=i;

 for(j=i+1;j

 if(a[p]>a[j])p=j;

 if(p!

=i)

 t=a[i];a[i]=a[p];a[p]=t;

}

3、插入法

for(i=1;i

{

 t=a[i];

 for(j=i-1;a[j]>t&&j>=0;j--)

a[j+1]=a[j];

a[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)

{

 swich(g)

 {

case0:

return0;

switch(g)

 case1:

case2:

return1;

}

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)      最小公倍数:

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

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

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2