计算机二级考试C语言十套上机题汇总7.docx

上传人:b****4 文档编号:6699825 上传时间:2023-05-10 格式:DOCX 页数:6 大小:16.62KB
下载 相关 举报
计算机二级考试C语言十套上机题汇总7.docx_第1页
第1页 / 共6页
计算机二级考试C语言十套上机题汇总7.docx_第2页
第2页 / 共6页
计算机二级考试C语言十套上机题汇总7.docx_第3页
第3页 / 共6页
计算机二级考试C语言十套上机题汇总7.docx_第4页
第4页 / 共6页
计算机二级考试C语言十套上机题汇总7.docx_第5页
第5页 / 共6页
计算机二级考试C语言十套上机题汇总7.docx_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机二级考试C语言十套上机题汇总7.docx

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

计算机二级考试C语言十套上机题汇总7.docx

计算机二级考试C语言十套上机题汇总7

1.填空题

  从键盘输入一组无符号整数并保存在数组xx[N]中,以整数0结束输入,要求这些数的最大位数不超过4位,其元素的个数通过变量num传入函数fun()。

请补充函数fun(),该函数的功能是:

从数组xx中找出个位和十位的数字之和大于5的所有无符号整数,结果保存在数组yy中,其个数由函数fun()返回。

  例如:

当xx[8]={123,11,25,222,42,333,14,5451}时,

  bb[4]={25,42,333,5451}。

  注意:

部分源程序给出如下。

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

  试题程序:

  #include

  #defineN1000

  intfun(intxx[],intbb[],intnum)

  {

  inti,n=0;

  intg,s;

  for(i=0;i

  {

  g=【xx[i]%10】;

  s=xx[i]/10%10;

  if((g+s)>5)

  【b[n++]=xx[i]】;

  }

  return【n】;

  }

  main()

  {

  intxx[N];

  intyy[N];

  intnum=0,n=0,i=0;

  printf("Inputnumber:

\n");

  do

  {

  scanf("%u",&xx[num]);

  }

  while(xx[num++]!

=0);

  n=fun(xx,yy,num);

  printf("\nyy=");

  for(i=0;i

  printf("%u",yy[i]);

  }

  答案及评析:

  【1】xx[i]%10【2】bb[n++]=xx[i]【3】n

  【解析】填空1:

将一个整数对10取余,则得到这个整数的个位数,将一个整数除以10再对10取余,则得到这个整数的十位数。

由程序可以看出,变量s保存了整数的十位数,所以应该将整数的个位数保存于变量g中。

填空2:

当整数的个位与十位的数字之和大于5时,则将这个整数存于数组bb中,同时,变量n记录了满足条件的无符号整数的个数。

填空3:

题目要求满足条件的无符号整数的个数由fun函数返回,所以函数返回n。

2.改错题

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

在字符串str中找出ASCⅡ码值最小的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。

例如,调用fun()函数之前给字符串输入fagAgBDh,调用后字符串中的内容为AfaggBDh。

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

  注意:

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

  试题程序:

  #include

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

  voidfun(charp)

  {

  charmin,*q;

  inti=0;

  min=p[i];

  while(p[i]!

=0)

  {

  if(min>p[i])

  {

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

  p=q+i;

  min=p[i];

  }

  i++;

  }

  while(q>p)

  {*q=*(q-1);

  q--;

  }

  p[0]=min;

  }

  main()

  {

  charstr[80];

  printf("Enterastring:

");

  gets(str);

  printf("\nTheoriginalstring:

");

  puts(str);

  fun(str);

  printf("\nThestringaftermoving:

");

  puts(str);

  printf("\n\n");

  }

  答案及评析:

  

(1)错误:

voidfun(charp)

  正确:

voidfun(char*p)

  

(2)错误:

p=q+i;

  正确:

q=p+i;

  【解析】错误:

由于本题中函数的功能是对字符串进行处理,而不是对单个字符进行处理,因此,函数的参数应为字符串指针。

  错误2:

使指针q指向ASCII码最小的字符

  本题解答需要3个步骤:

  

(1)找到字符串中ASCII码值最小的字符,并保存。

  

(2)将该字符复制,并将该字符前面的字符串顺次后移。

  (3)将ASCII码值最小的字符赋给字符串的第1个字符。

找到ASCII码值最小的字符可以通过定义一个字符min,该字符初始时等于字符串的第1个字符,若字符串的下一个字符小于min,则将下一个字符赋给min,如此循环到字符尾,即可得到ASCII码值最小的字符,同时令指针q指向最小字符。

之后对最小字符前面的子串顺次后移,可采用while语句实现。

  此题需要熟练掌握和灵活应用C语言的字符与整型变量的关系以及字符串操作。

3.编程题

  N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。

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

找出学生的最低分,由函数值返回。

  注意:

部分源程序给出如下。

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

  试题程序:

  #include

  #include

  #defineN8

  structslist

  {doubles;

  structslist*next;

  };

  typedefstructslistSTREC;

  doublefun(STREC*h)

  {

  }

  STREC*creat(double*s)

  {

  STREC*h,*p,*q;

  inti=0;

  h=p=(STREC*)malloc(sizeof(STREC));

  p->s=0;

  while(i<=""*产生8个节点的链表,各分数存入链表中*="">

  {q=(STREC*)malloc(sizeof(STREC));

  p->s=s[i];i++;p->next=q;p=q;

  }

  p->next=NULL;

  returnh;/*返回链表的首地址*/

  }

  outlist(STREC*h)

  {

  STREC*p;

  p=h;

  printf("head");

  do

  {printf("->%2.0f",p->s);p=p->next;}/*输出各分数*/

  while(p!

=NULL);

  printf("\n\n");

  }

  main()

  {

  doubles[N]={56,89,76,95,91,68,75,85},min;

  STREC*h;

  h=creat(s);

  outlist(h);

  min=fun(h);

  printf("min=%6.1f\n",min);

  }

  答案及评析:

  doublefun(STREC*h)

  {

  doublemin=h->s;

  while(h!

=NULL)/*通过循环找到最低分数*/

  {if(min>h->s)

  min=h->s;

  h=h->next;

  }

  returnmin;

  }

  【解析】在本题中,h为一个指向结构体的指针变量,若要引用它所指向的结构体中的某一成员时,要用指向运算符"->"。

由于是链表,所以要使h逐一往后移动,使用的是h=h->next。

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

当前位置:首页 > 工程科技

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

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