怎样用C语言写以下程序:由键盘输入一个长度小于20的字符串保存到一个数组中,利用这个字符串生成一个回文

字符串,并将得到的新字符串输出。例如:输入字符串:abcd,生成字符串:abcdcba。
以下是我写的程序:
#include<stdio.h>
#include<string.h>
int main()
{
char a[20],b[20];
int i,c,j;
printf("请输入一个长度小于20的字符串:\n");
gets(a);
c=strlen(a)-1;
for(i=1,j=1;i<=c;i++,j++)
b[j]=a[c-i+1];
puts(b);
printf("%s",strcat(a,b));
}
希望各位高手帮帮忙。

小错误,没有对j赋初值
在定义的时候改成int i,c,j=0;就可以了追问

好像还是不行?。。。。。。。你运行一下试试。
这是我的运行结果:

追答

#include
#include
int main()
{
char a[20],b[20];
int i,c,j;
printf("请输入一个长度小于20的字符串:\n");
gets(a);
c=strlen(a)-1;
for(i=1,j=0;i<=c;i++,j++)
b[j]=a[c-i];
b[j]='\0';
puts(b);
printf("%s",strcat(a,b));
}
这下可以了。。。。

追问

太感谢了!谢谢高手的帮忙,我是一个C语言初学者,还请多多指教!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-23
#include<stdio.h>
#include<string.h>
int main()
{
char a[20],b[20];
int i,c,j;
printf("请输入一个长度小于20的字符串:\n");
gets(a);
c=strlen(a)-1;
//printf("%d",c);
for(i=1,j=1;i<=c;i++,j++)
{
b[j-1]=a[c-i];
}
printf("%s",strcat(a,b));
gets(a);
}

你的b字符串b[0]为空,所以会输出乱码
第2个回答  2011-05-23
#include<stdio.h>
#include<string.h>
int main()
{
char a[40];
int i,c;
printf("请输入一个长度小于20的字符串:\n");
gets(a);
c=strlen(a);
for (i=0;i<c;i++)
{
a[i+c] = a[c-i-2];
}
puts(a);

return 0;
}

给分我!呵呵~追问

你写的很好,很感谢。但是,因为你不是最先回答我问题的。所以。。。。。。
但我想或许我们能成为朋友。你说呢?
因为我是C的初学者,所以还得各位高手多多指教!

第3个回答  2011-05-23
这个问题,,我也很想问诶。我们马上考试就考这个啊。。。。呜呜呜。。。。得到正确答案通知哈啊、、

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网