首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2013中考 | 2013高考 | 2013考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 托业 | 雅思 | 专四专八 | 口译笔译 | 博思
GRE GMAT | 新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 |
零起点法语 | 零起点德语 | 零起点韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师 | 秘书资格 | 心理咨询师 | 出版专业资格 | 广告师职业水平 | 驾驶员
网络编辑 | 公共营养师 | 国际货运代理人 | 保险从业资格 | 电子商务师 | 普通话 | 企业培训师
营销师
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
化工工程师 | 材料员
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
计算机等级考试
您现在的位置: 考试吧(Exam8.com) > 计算机等级考试 > 计算机二级 > C语言 > 模拟试题 > 正文

2012年全国计算机等级二级C语言模拟试题及答案(9)

来源:考试吧Exam8.com) 2012-8-27 15:57:06 考试吧:中国教育培训第一门户 模拟考场
2012年全国计算机等级二级C语言模拟试题及答案。

  第09套:

  给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。

  请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

  注意:源程序存放在考生文件夹下的BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  #define N 6

  typedef struct node {

  int data;

  struct node *next;

  } NODE;

  void fun(NODE *h)

  { NODE *p, *q; int t;

  p = h;

  while (p) {

  q = __1__ ;

  while (__2__)

  { if (p->data > q->data)

  { t = p->data; p->data = q->data; q->data = t; }

  q = q->next;

  }

  p = __3__ ;

  }

  }

  NODE *creatlist(int a[])

  { NODE *h,*p,*q; int i;

  h=NULL;

  for(i=0; i

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

  q->data=a[i];

  q->next = NULL;

  if (h == NULL) h = p = q;

  else { p->next = q; p = q; }

  }

  return h;

  }

  void outlist(NODE *h)

  { NODE *p;

  p=h;

  if (p==NULL) printf("The list is NULL!\n");

  else

  { printf("\nHead ");

  do

  { printf("->%d", p->data);

  p=p->next; }

  while(p!=NULL);

  printf("->End\n");

  }

  }

  main()

  { NODE *head;

  int a[N]= {0, 10, 4, 2, 8, 6 };

  head=creatlist(a);

  printf("\nThe original list:\n");

  outlist(head);

  fun(head);

  printf("\nThe list after inverting :\n");

  outlist(head);

  }

  解题思路:

  本题是考察使用链表方法,使用两重while循环语句,对链表的结点数据进行升序排列。

  第一处:由于外循环变量使用p指针,内循环变量使用q指针,所以q指向必须指向p的next

  指针,因此应填写:p.next。

  第二处:判断内循环q指针是否结束,所以应填:q。

  第三处:外循环控制变量p指向自己的next指针,所以应填:p.next。

  ***************************************************

  给定程序MODI1.C中函数fun的功能是: 将s所指字符串中的字母转换为按字母

  序列的后续字母(但Z转换为A, z转换为a),其它字符不变。

  请改正函数fun中指定部位的错误, 使它能得出正确的结果。

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

  给定源程序:

  #include

  #include

  void fun (char *s)

  {

  while(*s!='@')

  { if(*s>='A' & *s<='Z' || *s>='a' && *s<='z')

  { if(*s=='Z') *s='A';

  else if(*s=='z') *s='a';

  else *s += 1;

  }

  (*s)++;

  }

  }

  main()

  { char s[80];

  printf("\n Enter a string with length < 80. :\n\n "); gets(s);

  printf("\n The string : \n\n "); puts(s);

  fun ( s );

  printf ("\n\n The Cords :\n\n "); puts(s);

  }

  解题思路:

  第一处: 使用while循环来判断字符串指针s是否结束,所以应改为:while(*s)。

  第二处: 取字符串指针s的下一个位置,所以应改为:s++;。

  ***************************************************

  请编写函数fun, 函数的功能是: 移动一维数组中的内容; 若数组中有n个整数, 要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。

  例如, 一维数组中的原始内容为: 1,2,3,4,5,6,7,8,9,10; p的值为3。移动

  后, 一维数组中的内容应为: 5,6,7,8,9,10,1,2,3,4。

  注意:部分源程序在文件PROG1.C中。

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

  给定源程序:

  #include

  #define N 80

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

  {

  }

  main()

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

  int i,p,n=15;

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

  for(i=0; i

  printf("\n\nEnter p: ");scanf("%d",&p);

  fun(a,p,n);

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

  for(i=0; i

  printf("\n\n");

  NONO();

  }

  解题思路:

  本题是考察一维数组的操作。

  1. 定义一维数组中间变量b,把n值后面数组中的内容存入b中。

  2. 再把m前的数组中的内容存入b中。

  3. 最后把数组b的内容依次存放到w中。

  参考答案:

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

  {

  int i, j = 0, b[N] ;

  for(i = p + 1 ; i < n ; i++) b[j++] = w[i] ;

  for(i = 0 ; i <= p ; i++) b[j++] = w[i] ;

  for(i = 0 ; i < n ; i++) w[i]= b[i] ;

  }

1 2  下一页

  相关推荐:

  2012年计算机等级考试二级VB重点知识汇总

  2012年计算机等考四级数据库工程师备考笔记汇总

  2012年下半年计算机等级考试报名时间及入口汇总

文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。