就业数据资源平台
当前位置:首页 > C++语言程序设计
2013年计算机等级考试二级C++试题及答案6

填空题
  给定程序中,函数FUN的功能是:将S所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符原有的先后次序。
  例如,形参S所指的字符串为:def35adh3kjsdf7.执行结果为:defadhkjsdf3537.
  注意:部分源程序给出如下
  请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
  试题程序:#include <stdio.h>
  void fun(char *s)
  {
  int i, j = 0, k = 0;
  char t1[80], t2[80];
  for(i=0; s[i]!='\0'; i++)
  if(s[i]>='0' && s[i]<='9')
  {
  t2[j]=s[i];
  ___1___;
  }
  else
  {
  t1[k++] = s[i];
  }
  t2[j] = 0;
  t1[k] = 0;
  for (i=0; i<k; i++)
  ___2___;
  for (i=0; i<___3___; i++)
  s[k+i] = t2[i];
  }
  main()
  {
  char s[80] = "ba3a54j7sd567sdffs";
  printf("\nThe original string is : %s\n", s);
  fun(s);
  printf("\nThe result is : %s\n", s);
  }
  第1处填空:j++或++j或j+=1或j=j+1
  第2处填空:s[i]=t1[i]
  第3处填空:j
改错题
  下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数FUN的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
  请改正程序中的错误,使它能得出正确结果。
  注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!
  试题程序:#include <stdio.h>
  #include <conio.h>
  #include <stdlib.h>
  typedef struct aa
  {
  int data;
  struct aa *next;
  } NODE;
  fun(NODE *h)
  {
  int max = -1;
  NODE *p;
  /********found********/
  p = h; 
  while (p)
  {
  if (p->data > max)
  max = p->data;
  /********found********/
  p=h->next;
  }
  return max;
  }
  outresult(int s, FILE *pf)
  {
  fprintf(pf, "\nThe max in link : %d\n", s);
  }
  NODE *creatlink(int n, int m)
  {
  NODE *h, *p, *s;
  int i;
  h = p = (NODE*)malloc(sizeof(NODE));
  h->data = 9999;
  for (i=1; i<=n; i++)
  {
  s = (NODE*)malloc(sizeof(NODE));
  s->data = rand()%m;
  s->next = p->next;
  p->next = s;
  p = p->next;
  }
  p->next = NULL;
  return h;
  }
  outlink(NODE *h, FILE *pf)
  {
  NODE *p;
  p = h->next;
  fprintf(pf, "\nTHE LIST:\n\n HEAD");
  while (p)
  {
  fprintf(pf, "->%d ", p->data);
  p = p->next;
  }
  fprintf(pf, "\n");
  }
  main()
  {
  NODE *head;
  int m;
  head = creatlink(12, 100);
  outlink(head, stdout);
  m = fun(head);
  printf("\nTHE RESULT :\n");
  outresult(m, stdout);
  }
  第1处:p=h;应改为p=h->next;
  第2处:p=h->next;应改为p=p->next;
编程题
  请编写fun函数对长度为7个字符的字符串,除首,尾字符外,其他5个字符按ASCII码降序排列
  例如原来的字符串为,CEAecda,则排序后输出为CedcEAa
  注意:部分源程序给出如下。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  试题程序:#include <stdio.h>
  #include <ctype.h>
  #include <conio.h>
  #include <string.h>
  void fun( char *s,int num)
   {
   }
  main()
  {
  char s[10];
  FILE *out;
  printf("ê?è?7??×???μ?×???′?:");
  gets(s);
  fun(s,7);
  printf("\n%s", s);
  out=fopen("out.dat", "w");
  strcpy(s, "ceaEDCA");
  fprintf(out, "%s", s);
  fclose(out);
  }
  答案是:
  void fun( char *s,int num)
  {
  char t;
  int I,j;
  for(i=1;i<num-2;i++)
  for(j=i+1;j<num-1;j++)
  if(s[i]<s[j])
  {
  t=s[i];
  s[i]=s[j];
  s[j]=t;
  }
  }
就业数据资源平台