国产18禁黄网站免费观看,99爱在线精品免费观看,粉嫩metart人体欣赏,99久久99精品久久久久久,6080亚洲人久久精品

2016年計算機軟件水平考試程序員練習習題

時間:2016-08-10 16:52:00   來源:無憂考網(wǎng)     [字體: ]

  試題一

  【說明】

  該程序的功能是從文件IN.DAT中讀取一篇英文文章存入到字符串數(shù)組xx中,以行為單位對行中以空格或標點符號為分隔的所有單詞進行倒排。最后把已處理的字符串(應不含標點符號)仍按行重新存入字符串數(shù)組xx中,最后把結果xx輸出到文件OUT6.DAT中。

  例如:原文:You He Me

  I am a student.

  結果:Me He You

  student a am I

  原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。

  【函數(shù)】

  #include

  #include

  #include

  #include

  char xx[50][80];

  int maxline=0;/*文章的總行數(shù)*/

  int ReaaDat(void);

  void WriteDat(void);

  void StrOL(void)

  {

  char*pl,*p2,t[80];

  int i;

  for(i=0;i  {p1=xx[i];t[0]=0;

  while(*p1)p1++;

  while(p1>=xx[i])

  {while(!isalpha(*p1)&&p1!=xx[i])p1--;

  p2=p1;

  while( (1) )p1--;

  if(p1==xx[i])

  if(isalpha(*p1))p1--;

  else if(!isalpha(*(p1+1)))break;

  p2++;

  (2) ;

  strcat(t,p1+1);

  strcat(t," ");

  }

  strcpy(xx[i],t);

  }

  }

  void main()

  {

  if( (3) ){

  printf("數(shù)據(jù)文件in.dat不能打開!\n\007");

  return;

  }

  StrOL();

  writeDat();

  getch();

  }

  int ReadDat(void)

  {

  FILE*fp;

  int i=0;

  char*p;

  if((fp=fopen("e:\\a\\in.dat","r"))==NULL)return 1;

  while(fgets(xx[i],80,fp)!=NULL){

  p=strchr(xx[i],′\n′);

  if(p)*p=0;

  i++;

  }

  maxline= (4)

  fclose(fp);

  return 0;

  }

  void WriteDat(void)

  {

  FILE*fp;

  int i;

  fp=fopen("e:\\a\\out6.dat","w");

  >  for(i=0;i< (5) ;i++){

  printf("%s\n",xx[i]);

  fprintf(fp,"%s\n",xx[i]);

  }

  fclose(fp);

  }

  【答案】

  (1)isalpha(*p1)&&p1!=xx[i]

  (2)*p2=0

  (3)ReadDat()

  (4)i

  (5)maxline

  試題二

  閱讀下列說明和流程圖,將應填入(n)的語句寫在答題紙的對應欄內。

  【流程圖說明】

  下面的流程(如圖1所示)用N-S盒圖形式描述了在一棵二叉樹排序中查找元素的過程,節(jié)點有3個成員:data,left和right。其查找的方法是:首先與樹的根節(jié)點的元素值進行比較:若相等則找到,返回此結點的地址;若要查找的元素小于根節(jié)點的元素值,則指針指向此結點的左子樹,繼續(xù)查找;若要查找的元素大于根節(jié)點的元素值,則指針指向此結點的右子樹,繼續(xù)查找。直到指針為空,表示此樹中不存在所要查找的元素。

  【算法說明】

  【流程圖】

  將上題的排序二叉樹中查找元素的過程用遞歸的方法實現(xiàn)。其中NODE是自定義類型:

  typedef struct node{

  int data;

  struct node*left;

  struct node*right;

  }NODE;

  【算法】

  NODE*SearchSortTree(NODE*tree,int e)

  {

  if(tree!=NULL)

  {

  if(tree->data  (4) ;∥小于查找左子樹

  else if(tree->data  (5) ;∥大于查找左子樹

  else return tree;

  }

  return tree;

  }

  【答案】

  (1)p=p->left

  (2)p=p->right

  (3)return P

  (4)return SearchSortTree(tree->left)

  (5)return SearchSortTree(tree->right)


  試題三

  假設以帶頭結點的單循環(huán)鏈表作非遞減有序線性表的存儲結構。函數(shù)deleteklist(LinkList head)的功能是刪除表中所有數(shù)值相同的多余元素,并釋放結點空間。

  例如:鏈表初始元素為:

  (7,10,10,21,30,42,42,42,51,70)

  經(jīng)算法操作后變?yōu)椋?/p>

  (7,10,21,30,42,51,70)

  【函數(shù)1】

  void deleteklist(LinkList head)

  {

  LinkNode*p,*q;

  p=head->next;

  while(p!=head)

  {

  q=p->next;

  while( (1) )

  {

  (2) ;

  free(q);

  q=p->next;

  }

  p=p->next;

  }

  }

  【說明2】

  已知一棵完全二叉樹存放于一個一維數(shù)組T[n]中,T[n]中存放的是各結點的值。下面的程

  序的功能是:從T[0]開始順序讀出各結點的值,建立該二叉樹的二叉鏈表表示。

  【函數(shù)2】

  #include

  typedef struct node {

  int data;

  stuct node leftChild,rightchild;

  }BintreeNode;

  typedef BintreeNode*BinaryTree;

  void ConstrncTree(int T[],int n,int i,BintreeNode*&ptr)

  {

  if(i>=n) (3) ;∥置根指針為空

  else

  {

  ptr=-(BTNode*)malloc(sizeof(BTNode))

  ptr->data=T[i];

  ConstrucTree(T,n,2*i+1, (4) );

  ConstrucTree(T,n, (5) ,ptr->rightchild);

  }

  }

  main(void)

  {/*根據(jù)順序存儲結構建立二叉鏈表*/

  Binarytree bitree;int n;

  printf("please enter the number of node:\n%s";n);

  int*A=(int*)malloc(n*sizeof(int));

  for(int i=0;i

  for(int i=0;i

  ConstructTree(A,n,0,bitree);

  }

  答案:

  (1)q!=head &&q->data==p->data

  (2)p->next=q->next

  (3)ptr=NULL

  (4)ptr->leftchild

  (5)2*i+2

  試題四

  閱讀下列函數(shù)說明和C函數(shù),將應填入 n 處的字句寫在答題紙的對應欄內。

  [函數(shù)2.1說明]

  函數(shù)strcat(char s[], char t[])的功能是:將字符串t復制連接字符串s的尾部,并返回新

  字符串的首地址作為函數(shù)值。例如:若s=“abcd”,t=“efg”,則新字符串應該是“abcdefg”。

  [函數(shù)2.1]

  char *strcat(char s[], char t[])

  { char *p;

  p = s + strlen(s)-1

  while( (1) ) {

  (2) ;

  }

  *p = ‘\0’;

  return s;

  }

  [函數(shù)2.2說明]

  函數(shù)f(char *str, char del)的功能是:將非空字符串str中的指定字符del刪除,形成一個

  新字符串仍存放在str所指內存單元中。

  例如若str的值為“33123333435

  ”,del的值為‘3’,調用此函數(shù)后,新字符串為:“1245”。

  [函數(shù)2.2]

  void f(char *str, char del)

  {

  int i, j, len;

  len=strlen(str);

  i=j=0;

  while(i  if ( (3) )

  (4) = str[i];

  i++;

  }

  (5) ;

  }

  試題五

  閱讀以下說明和C代碼,將應填入 n 處的字句寫在答題紙的對應欄內。

  [說明]

  下面程序中函數(shù)fun的功能是:在含有10 個元素的s數(shù)組中查找數(shù),及數(shù)所在位置 (即,下標值),數(shù)可能不止一個。數(shù)作為函數(shù)值返回,數(shù)的個數(shù)通過指針變量n傳回,所在位置由數(shù)組pos傳回。

  例如:

  若輸入 2 8 5 7 8 4 5 3 2 8

  則應輸出:

  The max: 8

  Total: 3 //數(shù)出現(xiàn)次數(shù)

  The positions: 1 4 9

  #include

  #define M 10

  int fun(int *a, int *n, int pos[])

  { int i, k, max=-32767;

  (1)

  for(i=0; i  if( (2) ) max=a[i];

  for(i=0; i  if( (3) ) pos[k++]=i;

  *n=k;

  return max;

  }

  main()

  { int a[M], pos[M], i=0, j, n;

  printf("Enter 10 number :");

  for(i=0; i  j=fun( (5) );

  printf("The max: %d\n", j);

  printf("Total: %d",n);

  printf("The position:");

  for(i=0; i  printf("\n");

  }