C++反串的算法。。帮我看看那里出问题了

[复制链接]
查看11 | 回复2 | 2010-11-23 22:02:54 | 显示全部楼层 |阅读模式
#include
#include
void fanchuan(char c[])
{
int i,x,k,temp;
x=strlen(c);
printf("%d\n",x);
for(i=0,k=x-1;i>x;i++,k--)
{

temp=c;

c=c[k];

c[k]=temp;
}
puts(c);
}
void main()
{
char c[80];
gets(c);
fanchuan(c);
puts(c);
}

回复

使用道具 举报

千问 | 2010-11-23 22:02:54 | 显示全部楼层
for(i=0,k=x-1;i>x;i++,k--)你这里好像有些问题。我没估计错的话,你设了两个指针,一个在左边,一个在右边,循环的作用是把左右指针的字符交换,以达到反串的效果。这里应该改成 for(i=0,k=x-1;ix;i++,k--) {
temp=c;
c=c[k];
c[k]=temp; }这for循环除了问题。出的错可多了,假如字符数的二倍大于数组大小怎么办那不是有些字符被覆盖了嘛!!在说你这里根本就没有实现。因为for循环只执行了一次,因为i>x在第二次循环
回复

使用道具 举报

千问 | 2010-11-23 22:02:54 | 显示全部楼层
#include#includevoid fanchuan(char c[]){ int i,x,k,temp; x=strlen(c); printf("%d\n",x); for(i=0,k=x-1;i<x/2;i++,k--) {
temp=c[i
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行