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

admin2017-09-23  25

问题 请编写函数fun,其功能是:移动字符串中的内容,移动的规则是把第1一m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
    例如,字符串中原有的内容为"ABCDEFGHI.JK",m的值为3,移动后,字符串中的内容应该是"DEFGHUKABC"。
    注意:部分源程序在文件PROG1.C中。
    请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
  试题程序:
#include  < stdio.h >
#include  < string.h >
#define N 80
void fun (char*w,int m)
{
}
void main ()
{                                       .
  FILE *wf;
   char a [N] =  " ABCDEFGHIJK", b
[N] = "ABCDEFGHIJK";
  int m;
    printf ("The origina string :\n") ;
   puts (a) ;
   printf ("\n\nEnter m: ") ;
   fun (a,m) ;
  printf ( " \ nThe string after
moving :\n") ;
  puts (a) ;
  printf ("\n\n") ;
/*********found*********/
   wf = fopen ("out.dat", "w") ;
   fun (b,3) ;
   fprintf (wf,"%s",b) ;
   fclose (wf) ;
/*********found*********/
}

选项

答案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个字符放到最后一个字符中*/ } }

解析 本题应采用“循环左移”的算法,多层循环用于控制移动的字符的个数,即需进行多少次循环,内嵌循环的作用是将从第2个字符以后的每个字符依次前移一个位置,最后将第1个字符放到最后一个字符中。
转载请注明原文地址:https://kaotiyun.com/show/boxp777K
0

最新回复(0)