C语言 百分网手机站

计算机二级C语言预测上机训练题

时间:2020-10-28 10:43:10 C语言 我要投稿

计算机二级C语言预测上机精选训练题

  以下是百分网小编为大家整理的2017年计算机二级考试C语言预测上机精选训练题,希望对各位考生有所帮助!

  一、程序填空题

  请补充函数proc(),其功能是:计算并输出给定10个数的方差。

  例如,给定的10个数为12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,18.0,输出为s=8.877500。

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

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

  试题程序:

  #include

  #include

  double proc(double x[10])

  {

  int i;

  double avg=0.0;

  double sum=0.0;

  double abs=0.0:

  double sd;

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

  【1】 ;

  avg=sum/10;

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

  【2】 ;

  sd= 【3】 ;

  return sd;

  }

  void main()

  {

  double S,str[10]={12.0,9.0,26.0,5.0,6.0,31.0,

  9.0,3.0,8.0,18.0};

  int i;

  printf("\nThe original data is:\n");

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

  printf("%6.1f",str[i]);

  printf("\n\n");

  s=proc(str):

  printf("s=%f\n\n",s);

  }

  二、程序改错题

  下列给定程序中,函数proc()的功能是:从字符串str 中,删除所有大写字母’F’。

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

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

  试题程序:

  #include

  void proc(char*str)

  {

  int i,j;

  //****found****

  for(i=j=0;str[i]!=’0’;i++)

  if(str[i]!=’F’)

  //****found****

  str[j]=str[i];

  str[j]=’\0’;

  }

  void main()

  {

  char str[80];

  printf("\nEnter a string:");

  gets(str);

  printf("The original strin9:");

  puts(str);

  proc(str);

  printf("The string after deleted:");

  puts(str);

  printf("\n\n");}

  三、程序设计题

  假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。

  例如,若字符串中的内容为****a*bc*def*g** **,删除后,字符串中的内容则应当是a*bc*def*g** **。

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

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

  试题程序:

  #include

  #include

  woid proc(char*st r)

  {

  }

  void main()

  char str[81];

  printf("Enter a string:\n");

  gets(str);

  proc(str):

  printf("The string after deleted:\n");

  puts(str);}

  上机考试试题答案与解析

  一、程序填空题

  【1】sum+=x[i]【2】abs+=(x[i]-avg)*(x[i]

  avg) 【3】sqrt(abs/10)

  【解析】由函数proc()可知,变量SHill中存放n个数的`和,因此,【1】处填“sum+=x[i]”;然后求其平方差,因此,【2】处填“abs+=(x[i]- avg)*(x[i] -avg)”;最后求10 个数的方差,因此,【3】处填“sqrt(abs/10)”。

  二、程序改错题

  (1)错误:for(i=j=0;str[i]!=’0’;i++)

  正确:for(i=j=0;str[i]!=’\0’;i++)

  (2)错误:str[j]=str[i];

  正确:str[j++]=str[i];

  【解析】根据题目中的要求,从字符串str中删除所有大写字母’F’,需要检查字符串str中的每一个字符,直到字符串结束,因此,“for(i=j=0;str[i]!=’0 ’;i++)”应改为“for(i=j=0;str[i]!=’\0 ’;i++)”;将每一个不是’F’的字符放入原来的字符串中.形成新的字符串,因此,“str[j]= str[1];”应改为“str[j++]=str[i];”。

  三、程序设计题

  void proc(char*str)

  {

  char*p=str:

  while(*p==’*’)p++;//通过P的移动来达

  到使P指向第一个不是*号的字符

  for(;*p!=’\0 ’;p++,str++)//把从第一个

  不是*号的字符放到a中 ‘

  *str=* P:

  *str=’\0 ’; //最后用’\0’作为字符串结束标志

  }

  【解析】题目中要求将字符串中的前导*号全部删除首先将指针p移动到第一个不是*的字符,将指针P之后的字符放入原来的字符串中,并为新的字符串添加结束符。

【计算机二级C语言预测上机精选训练题】相关文章:

1.计算机二级C语言上机编程题讲解

2.计算机二级C语言上机模拟题

3.计算机二级《C语言》选择题训练题及答案

4.计算机二级C语言上机精选模拟题及答案

5.计算机二级C++上机综合应用题

6.计算机二级C语言笔试真题精选

7.计算机二级C语言预测试题

8.计算机二级考试C++上机试题选择题

9.计算机二级C上机考试简单应用题