请编制函数moveChar(char*s),其功能是;把S字符串中偶数位的字符左移到其相邻的偶数位上,偶数位的第一个字符移到最后一个偶数位上。奇数位的字符右移到与其相邻的奇数位上,奇数位的最后一个字符移到第一个奇数位上。函数readWriteData()负

admin2012-07-20  24

问题 请编制函数moveChar(char*s),其功能是;把S字符串中偶数位的字符左移到其相邻的偶数位上,偶数位的第一个字符移到最后一个偶数位上。奇数位的字符右移到与其相邻的奇数位上,奇数位的最后一个字符移到第一个奇数位上。函数readWriteData()负责读人文件IN.DAT中的数据,并把结果输出到OUT.DAT文件中。
例如;S字符串中原有内容为abcdefg,则调用该函数后,结果为gdafcbe。
注意;部分源程序已给出。
请勿改动主函数main()和输出函数readWriteData()的内容。
试题程序;
#include
#include
#include
#define N 81
void readWriteData();
void moveChar(char*s)
{
}
void main()
{
  char input[N];
  int i;
  for(i=0;i=0;
  system("CLS");
  printf("Enter a string;");
  gets(input);
  printf("The original string is;");
  puts(input);
  moveChar(input);
  printf("The string after modified;");
  puts(input);
  readWriteData();
}
void readWriteData()
{
char str[301],strl[300];
int i=0,len;
FILE*rf,*wf;
for(i=0;i<300;i++)strl=0;
rf=fopen("IN.DAT","r");
wf=fopen("OUT.DAT","w");
while(fgets(str,300,rf)!=NULL)
{
  len=strlen(str);
    for(i=0;i    strl=str
    moveChar(strl);
    fprintf(wf,"%s\n",strl);
    }
    fclose(rf);
    fclose(wf);
}

选项

答案   void moveChar(char*s) { char temp[2]; int i,len; len=strlen(s); //求出字符串S的长度 temp[0]=*(s+1); //保存偶数位的首位 if(len%2==0) { temp[i]=*(s+len-1-1); //将奇数位的最后一位保存 for(i=len-1;i>1;i-=2) *(s+i-1)=*(s+i-1-2); //奇数位右移 *s=temp[1]; //将奇数位的最后一位放到奇数队列的首位 for(i=2;i1;i-=2) *(x+i-1)=*(s+i-1-2); //奇数位右移 *s=temp[1]; //将奇数位的最后一位放到奇数队列的首位 for(i=2;i
解析 本题主要考查利用指针对字符串中字符进行移动。基本步骤是;1.分别将偶数位的头一位和奇数位的最后一位保存;2.利用指针,分别对数组中的奇数位和偶数位进行赋值移动;3.将保存起来的值放到移动后的留下的位置处。
转载请注明原文地址:https://jikaoti.com/ti/K8R7FFFM
0

最新回复(0)