模拟试题

3773考试网计算机等级考试模拟试题正文

2014年3月全国计算机二级C语言上机模拟试题三之2

来源:2exam.com 2013-10-30 19:03:21

给定源程序: 

  #include <stdio.h> 

  #include <stdlib.h> 

  typedef struct aa 

  { int data; 

  struct aa *next; 

  } NODE; 

  NODE *Creatlink(int n, int m) 

  { NODE *h=NULL, *p, *s; 

  int i; 

  p=(NODE )malloc(sizeof(NODE)); 

  h=p; 

  p->next=NULL; 

  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; 

  } 

  return p; 

  } 

  outlink(NODE *h) 

  { NODE *p; 

  p=h->next; 

  printf("\n\nTHE LIST :\n\n HEAD "); 

  while(p) 

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

  p=p->next; 

  } 

  printf("\n"); 

  } 

  main() 

  { NODE *head; 

  head=Creatlink(8,22); 

  outlink(head); 

  } 

  解题思路: 

  第一处: 指向刚分配的结构指针,所以应改为:p=(NODE *)malloc(sizeof(NODE)); 

  第二处: 在动态分配内存的下一行语句是,使用临时结构指针变量h保存p指针的初始位置,最后返回不能使用p,是因为p的位置已经发生了变化,所以应改为返回h。 

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

  请编写函数fun, 函数的功能是:统计一行字符串中单词的个数,作为函数值返 回。一行字符串在主函数中输入, 规定所有单词由小写字母组成,单词之间由若干 个空格隔开, 一行的开始没有空格。 

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

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

  给定源程序: 

  #include <stdio.h> 

  #include <string.h> 

  #define N 80 

  int fun( char *s) 

  { 

  } 

  main() 

  { char line[N]; int num=0; 

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

  num=fun( line ); 

  printf("The number of word is : %d\n\n",num); 

  NONO(); 

  } 

  解题思路: 

  本题是统计字符串中的单词数。 

  1. 利用while循环语句和指针变量,当字符为空格时,则单词数k加1。 

  2. 循环结束返回k。 

  参考答案: 

  int fun( char *s) 

  { 

  int k = 1 ; 

  while(*s) { 

  if(*s == ’ ’) k++ ; 

  s++ ; 

  } 

  return k ; 

  } 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1