阅读以下说明和C程序,填补空缺。 [说明] 下面的程序按照以下规则输出给定名词的复数形式。 (1)若名词以“y”结尾,则删除y并添加“ies”。 (2)若名词以“s”、“ch”或“sh”结尾,则添加“es”。 (3)其他所有情况,直

admin2012-04-11  53

问题 阅读以下说明和C程序,填补空缺。
[说明]
   下面的程序按照以下规则输出给定名词的复数形式。
   (1)若名词以“y”结尾,则删除y并添加“ies”。
   (2)若名词以“s”、“ch”或“sh”结尾,则添加“es”。
   (3)其他所有情况,直接添加“s”。
   [C程序]
   #include<stdio.h>
   #include<string.h>
   char *plural(char *word)
   {
   int n;
   char *pstr;
   n=strlen(word);     /*求给定单词的长度*/
   pstr=(char*)malloc(n+3);   /*申请给定单词的复数形式存储空间*/
   if(!pstr || n<2)
   return NULL;
   strcpy(pstr, word);     /*复制给定单词*/
   if(  (1)  )
   {
   pstr[n-1]=’i’; pstr[n]=’e’; pstr[n+1]=’s’;  (2)  ;
   }
   else
   if(pstr[n-1]==’s’||pstr[n-1]==’h’ &&(  (3)  ))
   {
   pstr[n]=’e’; pstr[n+1]=’s’; pstr[n+2]=’\0’;
   }
   else
   {pstr[n]=’s’; pstr[n+1]=’\0’; }
     (4)  ;
   }
   main(    )
   {    int i;  char *ps;
   char wc[9][10]=
   {"chair", "dairy", "boss", "circus", "fly", "dog", "church", "clue", "dish");
   for(i=0; i<9; i++)  {
   ps=  (5)  ;
   printf("%s:  %s\n", wc, ps);     /*输出单词及其复数形式*/
   free(ps);     /*释放空间*/
   }
   system("pause");
   }

选项

答案pstr[n-1]==’y’,或*(pstr+n-1)==’y’,或其等价表示 pstr[n+2]=’\0’,或*(pstr+n+2)=’\0’,或其等价表示 pstr[n-2]==’c’||pstr[n-2]==’s’,或其等价表示 retum pstr plural(wc[i]),或其等价表示

解析 空(1)处if语句处理的是以“y”结尾的名词,所以空(1)处应填入“pstr[n-1]==’y’”或其等价形式。由于串pstr的长度发生了变化,所以需要设置新的结束标志,空(2)处应填入“pstr[n+2]=’\0’”或其等价形式。空(3)处if语句处理串的末尾为“s”、“ch”或“sh”的情形,空(3)处应填入“.pstr[n一2]一’c’llps打[n一2]一’s”’或其等价形式。根据函数“char*plm‘al(char*word)”的定义,最后应将求得的给定名词的复数形式返回给主调函数main,对于串,应返回串空间的首地址,即返回指针pstr,因此空(4)处应填入“return pstr”。空(5)处应调用函数plural(char *word)对指定名词求复数,数组wc初始化时已设置了名词序列,所以空(5)处应填入“plural(wc)”。
转载请注明原文地址:https://jikaoti.com/ti/5vL7FFFM
0

相关试题推荐
最新回复(0)