| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1360 人关注过本帖
标题:错在那里!使字符串倒序排列!
只看楼主 加入收藏
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
结帖率:91.67%
收藏
已结贴  问题点数:10 回复次数:8 
错在那里!使字符串倒序排列!
输出什么都没有了?


#include<stdio.h>
#include<string.h>
void S(char *a);
void main()
{
  char a[100];
  gets(a);
  S(a);
  printf("%s",a);
}
void S(char *a)
{
    int n,i;
    char temp;
    n=strlen(a);
    for(i=-1;i<=(n/2);i++)
    {   
        temp=a[i];
        a[i]=a[n-i];
        a[n-i]=a[i];
    }
}

[ 本帖最后由 啊C 于 2010-6-25 14:49 编辑 ]
搜索更多相关主题的帖子: 字符 排列 倒序 
2010-06-25 14:47
dstone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:20
专家分:125
注 册:2010-6-17
收藏
得分:0 
code在哪里啊!

要是是字符串倒序的话,有直接的函数可以用!在<string.h>中:char * strrev(char *)
2010-06-25 14:50
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
回复 2楼 dstone
谢谢,过要求,不用,自己定义涵数!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2010-06-25 14:58
Free自然
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2008-3-23
收藏
得分:1 
i=-1?
还有结尾'\0'呢?
2010-06-25 15:17
dstone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:20
专家分:125
注 册:2010-6-17
收藏
得分:3 
    这个程序问题很多,参照一下strrev
    n=strlen(a);            //strlen只计算有效字符的个数
    for(i=-1;i<=(n/2);i++)  //i不能从-1开始
    {   
        temp=a[i];        //a[-1]不合法
        a[i]=a[n-i];       //a[n-(-1)]不合法
        a[n-i]=a[i];        //此处应该是a[n-i] = temp;吧
    }
   
    我写了一个,你看一下:
   
程序代码:
void S(char *a)
{
    int n, i;
    char temp, * a_tmp;

    a_tmp = a;
    n = strlen(a);
    for(i=0; i<=(n/2); i++)
    {  
        temp = *a_tmp;
        *a_tmp = *(a_tmp + n - 2*i -1);
        *(a_tmp + n - 2*i - 1) = temp;
        a_tmp++;
    }
}
2010-06-25 15:20
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:1 
根据楼主自己的思路,修改如下:
#include<stdio.h>
#include<string.h>
void S(char *a);
void main()
{
  char a[100];
  gets(a);
  S(a);
  printf("%s",a);
}
void S(char *a)
{
    int n=0,i=0;
    char temp;
    while(a[i++]!='\0')
        n++;
    for(i=0;i<=(n-1)/2;i++)
    {   
        temp=a[i];
        a[i]=a[n-1-i];
        a[n-1-i]=temp;
    }
}
你的错误楼上已经回答了。
2010-06-25 16:05
andylyop12
Rank: 2
等 级:论坛游民
帖 子:10
专家分:17
注 册:2010-4-3
收藏
得分:2 
#include<stdio.h>
#include<string.h>
void S(char *a);

void main()
{
  char a[100];

  gets(a);
  S(a);
  printf("%s",a);
}
void S(char *a)
{
    int n,i;
    char temp;
    n=strlen(a);
    for(i=0;i<=(n/2);i++)
    {   
        temp=a[i];
        a[i]=a[n-i-1];
        a[n-i-1]=temp;
    }
    a[n+1] = '\0';
}
2010-06-25 16:11
andylyop12
Rank: 2
等 级:论坛游民
帖 子:10
专家分:17
注 册:2010-4-3
收藏
得分:1 
不加'\0'也可以,strlen不包括结束符的
2010-06-25 16:13
cutehoney
Rank: 1
等 级:新手上路
帖 子:17
专家分:4
注 册:2010-5-14
收藏
得分:2 
for(i=-1;i<=(n/2);i++)
    {   
        temp=a[i];
        a[i]=a[n-i];
        a[n-i]=a[i];
    }
temp是中间量把a[i]给它,是让a[i]腾出位置接受a[n-i],最后把temp得给a[n-i],这样才实现了换值。
还有你这里边i=-1时候a[-1]是什么?
编译没有错并不是表示你就得有正确的输出结果
2010-06-25 18:27
快速回复:错在那里!使字符串倒序排列!
数据加载中...
 
   



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

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