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

admin2020-12-17  47

问题 请编制函数moveChar(char*s)。其功能是:把s字符串中偶数位的字符左移到其相邻的偶数位上,偶数位的第一个字符移到最后一个偶数位上。奇数位的字符右移到与其相邻的奇数位上,奇数位的最后一个字符移到第一个奇数位上。函数readWriteData()负责读人文件IN.nAT中的数据,并把结果输出到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);
    }
    felose(rf);
    felose(wf);
    }

选项

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

最新回复(0)