请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2倒置后接在字符串str1后面。 例如:str1=“How do”,str2=“?od uoy”,结果输出:“How do you do?”。 注意:部分源程序给出如下。

admin2009-02-15  81

问题 请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2倒置后接在字符串str1后面。
   例如:str1=“How do”,str2=“?od uoy”,结果输出:“How do you do?”。
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
   试题程序:
   #include<stdio.h>
   #include<conio.h>
   #define N 40
   void fun(char *str1,char *str2)
   {
      int i=0,j=0,k=0,n;
      char ch;
      char *p1=str1;
      char *p2=str2;
      while(*(p1+i))
         i++;
      while(*(p2+j))
         j++;
      n=【  】;
      for(;k=j/2;k++,j--)
      {
            ch=*(p2+k);
            *(p2+k)=*(p2+j);
            *(p2+j)=ch;
      }
      【  】;
      for(;【  】;i++)
             *(p1+i)=*p2++;
          *(p1+i)=’\0’;
      }
      main()
      {
         char str1[N],str2[N];
         int m,n,k;
         clrscr();
         printf("***Input the string str1 & str2
                 ***\n");
         printf("\nstr1:");
         gets(str1);
         printf("\nstr2:");
         gets(str2);
         printf("***The string str1 & str2 ***\n");
         puts(str1);
         puts(str2);
         fun(str1,str2);
         printf("*** The new string ***\n");
         puts (str1);
      }

选项

答案j-- *(p2+n)=’\0’ *p2

解析 第一空:while循环执行后,变量j中保存了字符串str2的长度,而后面的for循环是将字符串str2倒置,即将第一个字符与最后一个字符对调,第二个字符与倒数第二个字符对调,如此循环直到中间的字符。第一次执行循环时,*(p2+j)指向最后一个字符,所以j要减1,并将未减1之前的数赋给n。第二空:将字符串str2倒置后,在字符串的最后要加上结束标记符,’\0’。第三空:当*p2所指的字符为,’\0’时,说明已经将倒置后的字符串str2都接在字符串str1后面了,for循环应该结束。当*p2所指的为其他字符时,for循环要继续执行。
转载请注明原文地址:https://kaotiyun.com/show/oTID777K
0

最新回复(0)