林鑫源 发表于 2020-2-23 02:12:33

字符逆序排放

#include<stdio.h>
#include<string.h>
int main()
{
char str;
printf("qingshuru:\n");
gets(str);
sub(str,strlen(str));
puts(str);
return 0;

}

void sub(char*p1;int n)
{

char*pa=p1+n-1,temp;
while(p1<p2);
{
   temp=*p1++;
   *p1++=*p2;
   *p2--=temp;
   

}


}


这些代码哪错了?为什么运行不了?

alexw_h264 发表于 2020-2-23 08:11:39

1. sub函数要先申明才能调用
2. while()语句后面的;号要产出,否则是while空语句
3. 变量名pa应该是p2

调试运行正常的代码如下:

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

void sub(char*p1, int n);

int main()
{
char str;
printf("qingshuru:\n");
gets(str);
sub(str,strlen(str));
puts(str);
return 0;

}

void sub(char*p1, int n)
{

char*p2=p1+n-1,temp;
while(p1<p2)
{
   temp=*p1;
   *p1++=*p2;
   *p2--=temp;
}

chxchxkkk 发表于 2020-2-23 10:52:02

还是不细心

jackz007 发表于 2020-2-23 11:00:56

本帖最后由 jackz007 于 2020-2-23 11:10 编辑

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

void sub(char * p1)
{
      char* p2 = p1 + strlen(p1) - 1 , c                               ;
      for(; p2 > p1 ; c = * p1 , * p1 = * p2 , * p2 = c , p1 ++ , p2 --) ;
}      

int main()
{
      char str         ;
      printf("qingshuru:\n") ;
      gets(str)            ;
      sub(str)               ;
      puts(str)            ;
}
      编译、运行实况
C:\Bin>g++ -o x x.c

C:\Bin>x
qingshuru:
Hello , World !
! dlroW , olleH

C:\Bin>

      这个代码看上去是不是更加清爽呢?
页: [1]
查看完整版本: 字符逆序排放