liu306178205 发表于 2019-4-18 20:36:03

求助,这是一个字符串反置的代码,求问哪里错了

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

int dey(char*str)
{
        char*max = str + strlen(str) - 1;
        char*i = str;
        int p = 0;
        while (*max);
        {
                char dest = *max;
                *max = *i;
                *i = dest;
                p++;
                if (p > (strlen(str) / 2));
                {
                        return 0;
                }
                *max--;
                *i++;
        }
       
}
int main()
{
        char str[] = "wdqawfkhsaiogea";

        dey(str);
        printf("%s\n", str);
        return EXIT_SUCCESS;
}

Croper 发表于 2019-4-18 21:06:42

while (*max);
...
if (p > (strlen(str) / 2));
这两个地方删掉';'

jackz007 发表于 2019-4-18 22:02:09

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void dey(char * str)
{
      char * max = str + strlen(str) - 1 ;
      char * i = str                     ;
      char dest                        ;
      int p                              ;
      for(p = 0 ; p < strlen(str) / 2 ; p ++) {
                dest = * max               ;
                * max -- = * i             ;
                * i ++ = dest            ;
      }
}

int main()
{
      char str[] = "wdqawfkhsaiogea" ;
      dey(str)                     ;
      printf("%s\n", str)            ;
}

liu306178205 发表于 2019-4-18 23:02:42

Croper 发表于 2019-4-18 21:06
这两个地方删掉';'

这俩个地方为什么会错啊,*max函数里有自增,有脱出循环的条件 ,
if(p》7);看起来也没错啊。为啥嘞

jackz007 发表于 2019-4-18 23:25:43

    条件判断是为了选择代码执行,这 2 句后面本来应该带着需要选择执行的代码(或代码块),而如果是分号,就相当于告诉程序不用执行任何代码。

liu306178205 发表于 2019-4-19 10:46:15

jackz007 发表于 2019-4-18 23:25
条件判断是为了选择代码执行,这 2 句后面本来应该带着需要选择执行的代码(或代码块),而如果是分号 ...

蟹蟹,解决了
页: [1]
查看完整版本: 求助,这是一个字符串反置的代码,求问哪里错了