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

admin2023-02-27  26

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

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