标题:求解:用指针实现逆序,不定义其它变量,也不允许使用库函数
只看楼主
tomywj
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2010-7-20
结帖率:100%
已结贴  问题点数:10 回复次数:9 
求解:用指针实现逆序,不定义其它变量,也不允许使用库函数
如题,实现void reverse(const char *s1,char *s2),我写了好几回了,每回都出错啊!麻烦各位大侠帮忙啦!先谢谢了!
搜索更多相关主题的帖子: 逆序 变量 指针 函数 定义 
2010-10-13 09:26
tomywj
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2010-7-20
得分:0 
难道没人帮忙么?
2010-10-13 12:36
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
一个递归就可以了 论坛里都搜得到
2010-10-13 14:17
tomywj
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2010-7-20
得分:0 
#include<stdio.h>
void reverse(char * str1,char * s2)
{
 s2=str1;
 printf("%s\t%s\n",str1,s2);
 while(*str1++);
 //printf("%s\t%s\n",str1,s2);
 str1--;                       
 for(;*s2!='\0';)
 {
  *s2++=*str1--;    //这里肯定错了,但是我真不知道该怎么弄了啊            
 }
 s2;
 //printf("%s,%s\n",str1,s2);
 while(*str1++)
  *s2--;
 //printf("%s\t%s\n",str1,s2);  
  
}
int main()
{
  char *st="1234";
  char *s2;
  char b[20];
  s2=b;
  reverse(st,s2);
  printf("%s",s2);
  getch();
  return 0;   
}
2010-10-13 14:35
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:2 
s2=str1;它们指向的同一块内存
char c=*s2;
*s2++=*str1;
*str1--=c;   

2010-10-13 15:23
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
得分:0 
我用C++写的!
程序代码:
#include <iostream>
using namespace std;
void reverse(const char *s1,char *s2)
{
    char* q=s2;
    int n=strlen(s1);
    int i=0;
    const char* p=s1+n-1;
    while(i<n)
    {
        *q++=*p--;
        i++;
    }
    *q='\0';
}
int main()
{
    char* s="awdfdgdgdf";
    cout<<s<<endl;
    cout<<"逆置后为\n";
    int n=strlen(s);
    char* s1;
    s1=new char[n+1];
    reverse(s,s1);
    cout<<s1<<endl;
}

If You Want Something, Go Get It, Period.
2010-10-13 17:05
tomywj
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2010-7-20
得分:0 
各位大侠,请注意限制条件啊,不能定义其它变量和使用库函数!
2010-10-13 20:57
tomywj
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2010-7-20
得分:0 
我现在再改了一下 结果输出还是不理想啊
代码如下:(麻烦大家看看,给点意见啊)
程序代码:
#include<stdio.h>

char* reverse(const char *s1,char *s2)
{
  *s2='\0';
  s2--;
  while(*s1)
     *s2--=*s1++;
      //reverse(s1++,s2--);
  printf("%s\n",s2);
  return s2;
}
int main()
{

 const char *str="12345";

 char *sd;

 sd=(char *)malloc(sizeof(char)*20);

 sd=reverse(str,sd);

 printf("%s",sd);

 free(sd);

 getch();

 return 0;  
}

 
2010-10-13 21:57
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
得分:8 
一定要像你说的那么做!那只有这样了!
程序代码:
#include<stdio.h>
#include<conio.h>
char* reverse(const char *s1,char *s2)
{
    *s2='\0';
    s2--;
    while(*s1)
        *s2--=*s1++;
    s2--;
    return s2;
}
int main()
{
    const char *str="12345";
    char *sd;
    sd=new char[6];
    sd=reverse(str,sd+5);
    printf("%s",sd);
    getch();
    return 0; 
}


 

If You Want Something, Go Get It, Period.
2010-10-13 22:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-322749-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.438412 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved