请编写函数fun(),该函数的功能是:移动字符串中的内容,移动的规则是把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。 例如,字符串中原有的内容为ABCDEFGHIJK,m的值为 3,移动后,字符串中的内容应该是DEF

admin2010-05-05  37

问题 请编写函数fun(),该函数的功能是:移动字符串中的内容,移动的规则是把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
   例如,字符串中原有的内容为ABCDEFGHIJK,m的值为 3,移动后,字符串中的内容应该是DEFGHIJKABC。
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
   试题程序:
   #include <stdio. h>
   #include <string.h>
   #define   N    80
   void fun  (char  *w, int  m)
   {

   }
   main ( )
   {
      char  a[N]= "ABCDEFGHIJK";
      int m;
      printf ("The origina string : \n");
      puts (a);
      printf("\n\nEnter m: ");
      scanf ("%d", &m);
      fun (a, m);
      printf (" \nThe string after moving : \n");
      puts (a);
      printf ("\n\n");
   }

选项

答案void fun(char *w,int m) { int i,j; char t; for(i=1;i<=m;i++) /*进行m次的循环左移*/ {t=w[0]; for(j=1/w[j]!=’\0’;j++) /*从第2个字符开始以后的每个字符都依次前移一个字符*/ w[j-1]=w[j]; w[j-1]=t; /*将第1个字符放到最后一个字符中*/ } }

解析 我们在学习C语言的时候,应该广泛地应用到循环的方法,本题应采用“循环左移”的算法。即从第2个字符开始以后的每个字符都依次前移一个字符,而原来的第1个字符放在串中的最后一个字符。当要平移m个字符时,则要进行m次的循环左移。内嵌的循环的作用是完成从第2个字符开始以后的每个字符都依次前移一个字符,w[j-1]=t的作用是将第1个字符放到最后一个字符中。
转载请注明原文地址:https://kaotiyun.com/show/SHID777K
0

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