计算机二级考试C语言编程题练习题及答案

时间:2021-04-19 10:10:06 计算机等级 我要投稿

2017年计算机二级考试C语言编程题练习题及答案

  计算机二级考试是全国计算机等级考试(National Computer Rank Examination,简称NCRE)四个等级中的一个等级,考核计算机基础知识和使用一种高级计算机语言编写程序以及上机调试的基本技能。下面是2017年计算机二级考试C语言编程题练习题及答案。欢迎阅读。

2017年计算机二级考试C语言编程题练习题及答案

  2017年计算机二级考试C语言编程题练习题及答案

  1.3程序编程题

  请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。

  【参考答案】

  int fun (int a[][M])

  {int i,j,max=a[0][0];

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

  fr(j=0;j

  if(max

  max=a[i][j];

  return max;

  }

  2.3程序编程题

  编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。

  程序运行后,若输入精度0.0005,则程序应输出为3.14…。

  【参考答案】

  double fun ( double eps)

  {double s=1.0,s1=1.0;

  int n=1;

  while(s1>=eps)

  {s1=s1*n/(2*n+1);

  s=s+s1;

  n++;

  }

  return 2*s;}

  3.3程序编程题

  编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。

  【参考答案】

  void fun (int *a, int *n)

  {

  int i,j=0;

  for(i=1;i<=1000;i++)

  if((i%7==0||i%11==0)&&i%77!=0)

  a[j++]=i;

  *n=j;

  }

  4.3程序设计题

  规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。

  例如,字符串中的内容为:****A*BC*DEF*G*******,删除后字符串中的内容应当是:ABCDEFG。

  【参考答案】

  void fun( char *a )

  {int i,j=0;

  for(i=0;a[i]!='\0';i++)

  if(a[i]!='*')

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

  a[j]='\0';

  }

  5.3程序设计题

  编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。

  例如,分别输入下面两个字符串:

  FirstString--

  SecondString

  程序输出:

  FirstString--SecondString

  【参考答案】

  void fun(char p1[], char p2[])

  {int i,j;

  for(i=0;p1[i]!='\0';i++) ;

  for(j=0;p2[j]!='\0';j++)

  p1[i++]=p2[j];

  p1[i]='\0';}

  6.3程序设计题

  某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。

  【参考答案】

  void fun(STREC *a)

  {int i;

  a->ave=0.0;

  for(i=0;i

  a->ave=a->ave+a->s[i];

  a->ave/=N;

  }

  7.3程序设计题

  N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625。

  【参考答案】

  double fun( STREC *h )

  {double ave=0.0;

  STREC *p=h->next;

  while(p!=NULL)

  { ave=ave+p->s;

  p=p->next;}

  return ave/N;}

  8.3程序设计题

  编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。

  例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。

  【参考答案】

  void fun( int m, int *k, int xx[] )

  {int i,j,n=0;

  for(i=4;i

  { for(j=2;j

  if(i%j==0) break;

  if(j

  }

  *k=n;

  }

  9.3程序设计题

  编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。

  例如,若输入字符串123412132,输入字符为1,则输出3。

  【参考答案】

  int fun(char *ss, char c)

  {int i=0;

  for(;*ss!='\0';ss++)

  if(*ss==c)

  i++;

  return i;}

  10.3程序设计题

  编写函数fun,其功能是:计算n门课程的平均分,结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。

  【参考答案】

  float fun ( float *a , int n )

  {

  int i;

  float av=0.0;

  for(i=0; i

  av=av+a[i];

  return(av/n); /*返回平均值*/

  }

  11.3程序设计题

  学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。

  【参考答案】

  int fun( STREC *a, STREC *b )

  {int i,j=0,max=a[0].s;

  for(i=0;i

  if(max

  for(i=0;i

  if(max==a[i].s)

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

  return j;

  }

  12.3程序设计题

  规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。

  例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG。

  【参考答案】

  void fun( char *a )

  {

  int i=0;

  char *p=a;

  while(*p&&*p=='*')

  {a[i]=*p;

  i++;

  p++;}

  while(*p)

  {if(*p!='*')

  {a[i]=*p;i++;}

  p++;}

  a[i]='\0';

  }

  13.3程序设计题

  编写函数void fun(char *tt,int pp[]),统计在tt所指的字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在pp所指的数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:

  3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

  【参考答案】

  void fun(char *tt, int pp[])

  {int i;

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

  pp[i]=0;

  for(;*tt!='\0';tt++)

  if(*tt>='a'&&*tt<='z')

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

  }

  14.3程序设计题

  规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。例如,字符串中的内容为:"****A*BC*DEF*G*******",删除后,字符串中的内容应当是:"****A*BC*DEF*G"。在编写函数时,不得使用C语言提供的字符串函数。

  【参考答案】

  void fun( char *a )

  {while(*a!='\0')

  a++;

  a--;

  while(*a=='*')

  a--;

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

  }

  15.3程序设计题

  编写函数fun,其功能是:比较字符串的长度,(不得使用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符长度相同,则返回第一个字符串。例如,输入beijingshanghai(为回车键),函数将返回shanghai。

  【参考答案】

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

  {int i,j;

  for(i=0;s[i]!= '\0';i++);

  for(j=0;t[j]!= '\0';j++);

  if(i<=j) return t;

  else return s;

  }

  16.3程序设计题

  学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:函数返回该学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)。

  【参考答案】

  STREC fun( STREC *a, char *b )

  {int i;

  STREC str={"\0",-1};

  for(i=0;i

  if(strcmp(a[i].num,b)==0)

  str=a[i];

  return str;

  }

  17.3程序设计题

  函数fun的功能是:将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为"ABCDEFG123456",其中字符A的ASCII码值为奇数,因此应当删除;字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符2的ASCII码值为偶数,在数组中

  的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是"246"。

  【参考答案】

  void fun(char *s, char t[])

  {int i,j=0;

  for(i=0;s[i]!='\0';i++)

  if(i%2==0 && s[i]%2==0)

  t[j++]=s[i];

  t[j]='\0'; }

  18.3程序设计题

  编写函数fun,其功能是:利用下面的简单迭代方法求方程cos(x)-x=0的.一个实根。

  迭代步骤如下:

  (1)取x1初值为0.0;

  (2)x0=x1,将x1的值赋给x0;

  (3)x1=cos(x0),求出一个新的x1;

  (4)若x0-x1的绝对值小于0.000001,

  执行步聚(5),否则执行步聚(2);

  (5)所求x1就是方程cos(x)-x=0的一

  个实根,作为函数值返回。

  程序将输出结果Root=0.739086。

  【参考答案】

  double fun()

  { double x0,x1;

  x1=0.0;

  do{

  x0=x1;

  x1=cos(x0);

  }while(fabs(x0-x1)>=1e-6);

  return x1;}

  19.3程序设计题[所属年份:2010.9;2011.3;]

  规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串中的前导*号全部移到字符串的尾部。例如,字符串中的内容为:"*******A*BC*DEF*G****",移动后,字符串中的内容应当是:"A*BC*DEF*G***********"。在编写函数时,不得使用C语言提供的字符串函数。

  【参考答案】

  void fun( char *a )

  {int i=0,n=0;

  char *p;

  p=a;

  while (*p=='*')

  {n++;p++;}

  while(*p)

  {a[i]=*p;i++;p++;}

  while(n!=0)

  {a[i]='*';i++;n--;}

  a[i]='\0';

  }

  20.3程序设计题

  学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数。

  【参考答案】

  int fun( STREC *a, STREC *b )

  {int i,j=0,min=a[0].s;

  for(i=0;i

  if(min>a[i].s)

  min=a[i].s;

  for(i=0;i

  if(min==a[i].s)

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

  return j;

  }

  21.3程序设计题

  编写函数fun,其功能是计算:

  s作为函数值返回。在C语言中可调用log(n)函数求ln(n)。log函数的引用说明为:double log(double x)。例如,若m的值为20,则fun函数值为6.506583。

  【参考答案】

  double fun( int m )

  {int i;

  double s=0.0;

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

  s=s+log(i);

  return sqrt(s);

  }

  22.3程序设计题[所属年份:2010.9;2011.3;]

  规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:只删除字符前导和尾部的*号,串中字母间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中尾部*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:"****A*BC*DEF*G*******",删除后,字符串中

  的内容应当是:"A*BC*DEF*G"。

  【参考答案】

  void fun( char *a, int n,int h,int e )

  {int i,j=0;

  for(i=h;i

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

  a[j]='\0'; }

  23.3程序设计题

  函数fun的功能是:将s所指字符串中下标为偶数的字符删除,剩余字符形成的新串放在t所指数组中。例如,当s所指字符串中的内容为"ABCDEFGHIJK"时,在t所指数组中的内容应是:"BDFHJ"。

  【参考答案】

  void fun(char *s, char t[])

  {int i,j=0,k=strlen(s);

  for(i=1;i

  t[j++]=s[i];

  t[j]='\0';}

  24.3程序设计题

  编写函数fun,其功能是:将a、b中的两个两位正整数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。

  例如,当a=45,b=12,调用该函数后c=2415。

  【参考答案】

  void fun(int a, int b, long *c)

  {*c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000;

  }

  25.3程序设计题

  假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中的其它的*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。

  例如,字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是ABCDEFG*******。

  【参考答案】

  void fun( char *a, char *p )

  {char *t=a;

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

  if(*t!='*')

  *(a++)=*t;

  for(;*t!='\0';t++)

  *(a++)=*t;

  *a='\0';}

  26.3程序设计题

  学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:按分数降序排列学生的记录,高分在前,低分在后。

  【参考答案】

  void fun( STREC a[] )

  {int i,j;

  STREC t;

  for(i=1;i

  for(j=0;j

  if(a[j].s

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

  }

  27.3程序设计题

  学生的记录由学号和成绩组成。N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

  【参考答案】

  double fun( STREC *a, STREC *b, int *n )

  {int i;

  double av=0.0;

  *n=0;

  for(i=0;i

  av=av+a[i].s;

  av=av/N;

  for(i=0;i

  if(av<=a[i].s)

  { b[*n]=a[i];*n=*n+1;}

  return av; }

  28.3程序设计题

  编写函数fun,其功能是:将1到m之间(含m)能被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。例如,若传给m的值为50,则程序输出:

  7 11 14 21 22 28 33 35 42 44 49

  【参考答案】

  void fun ( int m, int *a , int *n )

  {int i,j=0;

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

  if(i%7==0||i%11==0)

  a[j++]=i;

  *n=j;

  }

  29.3程序设计题

  规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。

  例如,字符串中的内容为:"*******A*BC*DEF*G****",删除后字符串中的内容应当是:"A*BC*DEF*G****"。编写函数时,不得使用C语言提供的字符串函数。

  【参考答案】

  void fun( char *a )

  {char *p=a;

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

  for(;*p!='\0';p++,a++)

  *a=*p;

  *a='\0';

  }

  30.3程序设计题

  N名学生的成绩已在主函数中放入一个带有头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:找出学生的最高分,并由函数值返回。

  【参考答案】

  double fun( STREC *h )

  {double max=h->s;

  while(h!=NULL)

  {if(maxs) max=h->s;

  h=h->next;}

  return max;

  }

【2017年计算机二级考试C语言编程题练习题及答案】相关文章:

2017年计算机二级c语言题库及答案11-06

2017下半年计算机二级考试C语言考试试题及答案08-15

2017年计算机等级考试二级C语言考试技巧10-08

2017年计算机二级c题库及答案11-01

2017年计算机二级C语言考试模拟试题08-15

2017年计算机二级C++考试试题及答案08-20

2017年计算机二级C语言基础考试试题08-19

2017年计算机二级考试C语言考试题库08-15

2017年计算机二级c语言背题库08-21

2017年计算机二级C语言考点归纳08-19