计算机二级笔试和上机|2016计算机二级c上机考试题库

来源:计算机二级 发布时间:2018-08-30 点击:

  一、程序填空题

  请补充函数proc(char*str),该函数的功能是把字符串中的内容逆置。

  例如,字符串中原有的字符串为abcdef9,则调用该函数后,串中的内容变为gfedcba。

  注意:部分源程序给出如下。

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

  试题程序:

  #include

  #include t

  #include

  #include

  #define M 81

  void proc(char*str)

  【2】 ;

  【3】 ;

  }

  }

  void main()

  {

  char str[M];

  system("CLS"):

  printf("Enter a string:");

  gets(str);

  printf("The original string is:");

  puts(str);

  proc(str);

  printf("\n");

  printf("The string after modified:");

  puts(str);

  }

  二、程序改错题

  下列给定程序中,函数proc()的功能是:将字符串str 中所有字符复制到字符串b中,要求每复制3个字符之后插入一个空格。例如,在调用proc()函数之前给字符串str 输入abcdefghijk,调用函数之后,字符串b中的内容则为abe def ghijk。

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

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

  试题程序:

  #include

  void proc(char*str,char*b)

  {

  int i,k=0:

  while(*str)

  //****found****

  {

  i=1;

  //****found****

  while(i<3||*str)

  {

  b[k]=*str;

  k++;str++;i++;

  }

  if(*str)

  //****found****

  {b[k]=’’;}

  void main()

  {

  char str[80],b[80];

  printf("Enter a string:");gets(str);

  printf("The original string:");

  puts(str);

  proc(str,b);

  printf("\nThe string after insert

  space:");puts(b);printf("\n\n");

  }

  三、程序设计题

  请编写函数proc(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从P到n-1(p≤n-1)的数组元素平移到数组的前面。

  例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,p的值为4。移动后,一维数组中的内容应为5,6,7,8,9,10,11,12,13,14,1,2,3,4。

  注意:部分源程序给出如下。

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

  试题程序:

  #include

  #define M 80

  void proc(int * w,int P,int n)

  {

  }

  void main()

  {

  int arr[M]={1,2,3,4,5,6,7,8,9,10,11,12,13,14};

  int i,p,n=14;

  printf("The original data:\n");

  for(i=0:i

  printf("%3d",arr[i]);

  printf("\n\nEnter P:");

  scanf("%d",&p);

  proc(arr,p,n);

  printf("\nThe data after moving:\n");

  for(i=0:i

  printf("%3d",arr[i]);

  printf("\n\n");

  }

  【参考答案】

  一、程序填空题

  【1】i

  【解析】要将字符串中的内容逆置.可以通过将字符串中的第一个字符和最后一个字符互换,第二个和倒数第二个互换,直到字符串str最中间的字符为止,因此,【1】处填“i

  二、程序改错题

  (1)错误:i=1:

  正确:i=0;

  (2)错误:while(i<3||*str)

  正确:while(i<3&&*str)

  (3)错误:b[k]=’’;

  正确:b[k++]=’’;

  【解析】由函数proc()可知,变量i为计算每次字符个数是否到3的计数器变量,其初始值为0,因此,i=1;应改为i =0;。当计数器i小于3,而且字符串str没有结束时,将str 中的字符赋值给字符串b,因此,“while(i<3||*str)”应改为“while(i<3&&*str)”。每次计数器变量为3而字符串str没有结束时,为字符串b赋值为空格,而不是空字符,因此,“b[k]=’’;”应改为“b[k++]=’’;”。

  三、程序设计题

  void proc(int*w,int p,int n)

  {

  int i,j,t;

  for(i=P;i<=n-1;i++)

  { t=w[n-1];//t放最后一个元素

  for(j=n-2;j>=0;j--)

  w[j+1]=w[j]; //每循环一次,把所有的元

  素往后侈

  w[0]=t; //再把最后一个放到第一个空间中

  }

  }

  【解析】题目中要求把下标从p到n-1的数组元素平移到数组的前面,可以通过每一次循环将最后一个元素放在第一个位置上,使其成为第一个元素,其余元素后移一个位置。通过n-1-p次循环实现将从p到n-1的数组元素平移到数组的前面。


上一篇:ms office二级考试题库_2016计算机二级Office考试题库真题
下一篇:【2016年浙江计算机二级选择题】2016年浙江计算机二级选择题

Copyright @ 2013 - 2018 234考试网 All Rights Reserved

234考试网 版权所有 京ICP备16605803号