二级考试试题.docx

上传人:b****6 文档编号:4281156 上传时间:2022-11-28 格式:DOCX 页数:12 大小:18.52KB
下载 相关 举报
二级考试试题.docx_第1页
第1页 / 共12页
二级考试试题.docx_第2页
第2页 / 共12页
二级考试试题.docx_第3页
第3页 / 共12页
二级考试试题.docx_第4页
第4页 / 共12页
二级考试试题.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

二级考试试题.docx

《二级考试试题.docx》由会员分享,可在线阅读,更多相关《二级考试试题.docx(12页珍藏版)》请在冰豆网上搜索。

二级考试试题.docx

二级考试试题

填空题

  给定程序中,函数fun的功能是:

对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。

  例如,形参s所指的字符串为:

baawrskjghzlicda,执行后p所指字符数组中的字符串应为:

aachjlsw。

  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

  注意:

源程序存放在考生文件夹下的BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  voidfun(char*s,char*p)

  {inti,j,n,x,t;

  n=0;

  for(i=0;s[i]!

='\0';i++)n++;

  for(i=1;i<=""p="">

  ___1___;

  for(j=___2___+2;j

  if(s[t]>s[j])t=j;

  if(t!

=i)

  {x=s[i];s[i]=s[t];s[t]=x;}

  }

  for(i=1,j=0;i

  /

  p[j]=___3___;

  }

  main()

  {chars[80]="baawrskjghzlicda",p[50];

  printf("\nTheoriginalstringis:

%s\n",s);

  fun(s,p);

  printf("\nTheresultis:

%s\n",p);

  }

  解题思路:

  第一处:

取外循环的控制变量,所以应填:

t=i。

  第二处:

内循环的起始变量,应该是i+2,所以应填:

i。

  第三处:

新字符串处理完后应添加字符串结束符,所以应填:

'\0'。

  改错题

  给定程序MODI1.C中函数fun的功能是:

用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:

  π111

  ┄┄≈1-┄┄+┄┄-┄┄+...

  4357

  例如,程序运行后,输入0.0001,则程序输出3.1414。

  请改正程序中的错误,使它能输出正确的结果。

  注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  floatfun(floatnum)

  {ints;

  floatn,t,pi;

  t=1;pi=0;n=1;s=1;

  while(t>=num)

  {

  pi=pi+t;

  n=n+2;

  s=-s;

  t=s%n;

  }

  pi=pi*4;

  returnpi;

  }

  main()

  {floatn1,n2;

  printf("Enterafloatnumber:

");

  scanf("%f",&n1);

  n2=fun(n1);

  printf("%6.4f\n",n2);

  }

  解题思路:

  第一处:

要判断t的最后一项绝对小于指定的数,由于t是实数,那么应改为while(fabs(t)>=num)。

  第二处:

t是s除以n的值,而不是取余数,所以应改t=s/n;。

  编程题

  请编写一个函数voidfun(chara[],charb[],intn),其功能是:

删除一个字符串中指定下标的字符。

其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。

  例如,输入一个字符串:

World,然后输入3,则调用该函数后的结果为:

Word。

  注意:

部分源程序在文件PROG1.C中。

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

  给定源程序:

  #include

  #include

  #defineLEN20

  voidfun(chara[],charb[],intn)

  { 

  }

  main()

  {charstr1[LEN],str2[LEN];

  intn;

  printf("Enterthestring:

\n");

  gets(str1);

  printf("Enterthepositionofthestringdeleted:

");

  scanf("%d",&n);

  fun(str1,str2,n);

  printf("Thenewstringis:

%s\n",str2);

  NONO();

  }

  解题思路:

  本题是利用字符串拷贝和字符串连接来生成新的字符串。

  参考答案:

  voidfun(chara[],charb[],intn)

  {

  strncpy(b,a,n);

  b[n]=0;

  strcat(b,a+n+1);

  }

 

填空题

  给定程序中,函数fun的功能是:

在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。

ss所指字符串数组中共有N个字符串,且串长小于M。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

  注意:

源程序存放在考生文件夹下的BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  #defineN5

  #defineM10

  voidfun(char(*ss)__1__,intk)

  {inti=0;

  while(i<__2__){

  ss[i][k]=__3__;i++;}

  }

  main()

  {charx[N][M]={"Create","Modify","Sort","skip","Delete"};

  inti;

  printf("\nTheoriginalstring\n\n");

  for(i=0;i<="">

  fun(x,4);

  printf("\nThestringafterdeleted:

\n\n");

  for(i=0;i<=""i++)=""puts(x[i]);="">

  }

  解题思路:

  本题是根据给定的字符串数组中删除串长大于某个值的右边字符串。

  第一处:

函数的定义,试题中已用M作为字符串的长度,所以应填:

M。

  第二处:

利用while循环,分别对字符串数组中的每个字符串置字符串结束符,程序中已经给定了N个字符串,所以应填:

N。

  第三处:

置字符串结束符,所以应填:

0(或'\0')。

改错题

  给定程序MODI1.C中函数fun的功能是:

根据以下公式求π值,并作为函数值返回。

  例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。

  π1121231234

  ─=1+─+─×─+─×─×─+─×─×─×─+……

  23353573579

  请改正程序中的错误,使它能得出正确结果。

  注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

  给定源程序:

  #include

  #include

  doublefun(doubleeps)

  {doubles,t;intn=1;

  s=0.0;

  t=0;

  while(t>eps)

  {s+=t;

  t=t*n/(2*n+1);

  n++;

  }

  return(s);

  }

  main()

  {doublex;

  printf("\nPleaseenteraprecision:

");scanf("%lf",&x);

  printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));

  }

  解题思路:

  第一处:

初始化t的值,根据程序中的计算程序和试题的要求得出,t应为1。

  第二处:

根编程题

  假定输入的字符串中只包含字母和*号。

请编写函数fun,它的功能是:

使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。

函数fun中给出的语句仅供参考。

例如,字符串中的内容为:

*******A*BC*DEF*G****,若n的值为4,删除后,

  字符串中的内容应当是:

****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍

  为:

*******A*BC*DEF*G****。

n的值在主函数中输入。

在编写函数时,不得使用C语言提供的字符串函数。

  注意:

部分源程序在文件PROG1.C文件中。

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

  你编写的若干语句。

  给定源程序:

  #include

  voidfun(char*a,intn) 

  {

  inti=0,j,k=0;

  while(a[k]=='*')k++;/*k为统计*字符个数*/

  if(k>n)

  {

  i=n;j=k;

  /*以下完成将下标为k至串尾的字符前移k-n个位置*/

  }

  }

  main()

  {chars[81];intn;

  printf("Enterastring:

\n");gets(s);

  printf("Entern:

");scanf("%d",&n);

  fun(s,n);

  printf("Thestringafterdeleted:

\n");puts(s);

  NONO();

  }

  解题思路:

  本题是考察字符串的操作。

  利用for循环来判断a[j]的字符是否是字符串结束符,如果不是字符串结束符,则把a[j]

  的字符依次存放到a[i]。

其中,变量i是n的初始值,变量j是字符串前导的*号数。

  参考答案:

  voidfun(char*a,intn)

  {

  inti=0,j,k=0;

  while(a[k]=='*')k++;/*k为统计*字符个数*/

  if(k>n)

  {

  i=n;j=k;

  /*以下完成将下标为k至串尾的字符前移k-n个位置*/

  for(;a[j]!

=0;j++)

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

  a[i]=0;

  }

  }

公式π/2得出,所以返回时应原有s的基础上乘以2作为返回值。

 

2011年计算机二级C语言上机操作题及答案(79)

来源:

虎奔教育发布日期:

13-03-0716:

39:

58

第一题

请输入fun函数,该函数的功能是把数组aa中的偶数元素按原来的先后顺序放在原数组后面。

例如,输入“45,55,62,42,35,52,78,95,66,73”,则结果输出“45,55,35,95,73,62,42,52,78,66”。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所写的若干表达式或语句。

#include

#define N10

voidfun(int aa[])

{

      int i,j=0,k=0;

      int bb[N];

      for(i=0;i

             if(___1___)

                    bb[k++]=aa[i];

             else

                    aa[j++]=aa[i];

      for(i=0;___2___;i++,j++)

             aa[j]=bb[i];

}

main()

{

      int i;

      int aa[N]={45,55,62,42,35,52,78,95,66,73};

      printf("\n********originallist***********\n");

      for(i=0;i

             printf("M",aa[i]);

      fun(aa);

      printf("\n********newlist***********\n");

      for(i=0;i

             printf("M",aa[i]);

}

第一题答案:

第1处填空:

aa[i]%2==0或0==aa[i]%2或aa[i]%2

第2处填空:

ii

第二题

下列给定程序中函数fun的功能是:

删除字符串s中的所有空白字符(包括Tab字符、回车符)。

输入字符串时用“#”结束输入。

请该正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得改动程序的结构!

#include

#include

#include

voidfun(char *p)

{

    int i,t;

    char c[80];

    for(i=0,t=0;p[i];i++)

           if(!

isspace(*(p+i)))

                  c[t++]=p[i];

    /********found********/

    c[t]="\0";

    strcpy(p,c);

}

main()

{

    char c,s[80];

    int i=0;

    printf("Inputastring:

");

    c=getchar();

    while(c!

='#')

    {

 &nbs

p;         s[i]=c;

           i++;

           c=getchar();

    }

    s[i]='\0';

    fun(s);

    puts(s);

}

第二题答案:

第1处:

c[t]=”\0”;应改为c[t]=’\0’;

第三题

  已知学生的记录有学号和学习成绩构成,N名学生的数据已存入a结构体数组中。

请编写函数fun,该函数的功能是:

找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。

已给出函数的首部,请完成该函数。

  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include

#include

#include

#defineN10

typedefstructss

{

      charnum[10];

      ints;

}STU;

voidfun(STUa[],STU*s)

{

}

main()

      STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},

      {"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;

      int i;

      FILE *out;

      printf("****Theoriginaldata*****\n");

      for(i=0;i

             printf("N0=%sMark=%d\n",a[i].num,a[i].s);

      fun(a,&m);

      printf("*****THERESULT*****\n");

      printf("Thelowest:

%s,%d\n",m.num,m.s);

      out=fopen("out.dat","w");

      fprintf(out,"%s\n%d",m.num,m.s);

      fclose(out);  

}

第三题答案:

voidfun(STUa[],STU*s)

{

  inti,min;

  min=a[0].s;

  for(i=0;i

if(a[i].s

{

  min=a[i].s;

  *s=a[i];

}

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

当前位置:首页 > 总结汇报 > 学习总结

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

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