使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun,其功能是:移动字符串中的内容,移动的规则是把第1~m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的

admin2020-06-02  30

问题 使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun,其功能是:移动字符串中的内容,移动的规则是把第1~m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
    例如,字符串中原有的内容为“ABCDEFGHIJK”,m的值为3,移动后,字符串中的内容应该是“DEFGHUKABC”。
    注意:部分源程序在文件PROGl.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:");
scanf("%d",&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/HqCp777K
0

最新回复(0)