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

admin2016-12-06  27

问题 请编写函数fun,其功能是:移动字符串中的内容,移动的规则是把第1~m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
    例如,字符串中原有的内容为’’ABCDEFGHI-JK’’,m的值为3,移动后,字符串中的内容应该是’’DEFGHIJKABC’’。
    注意:部分源程序在文件PROG1.C中。
    请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
1    #include<stdio.h>
2   #include<string.h>
3   #define N 80
4   void fun(char*w,int m)
5  {
6
7   }
8   void main()
9   {
10  FILE*wf;
11  char a[N]=’’ABCDEFGHIJK’’,b[N]=’’ABCDEFGHIJK’’;
12  int m;
13  printf("The origina string:\n’’);
14  puts(a);
15  printf(’’\n\nEnter m:’’);
16  scanf(’’%d”,&m);
17  fun(a,m);
18  printf (’’\nThe string after moving:\n’’);
19   puts(a);
20   printf(’’\n\n’’);
21   /*********found*********/
22  wf=fopen(’’out.dat’’,’’w’’);
23  fun(b,3);
24   fprintf(wf,’’%s’’,b);
25   fclose(wf);
26   /*********found*********/
27  }

选项

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

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

最新回复(0)