如何用C语言,从键盘输入一个字符串,将其按逆序存入另一个字符数组中并输出,要求用最基本的C语言

大概模型是:
#include<stdio.h>
#include<string.h>
void main()
{
char a[20],b[20];
int i,j;
gets(a);
for(i=strlen(a)-1;i>=0;i--)
for(j=strlen(b)-21;j<=20;j++)
{
b[j]=a[i];
}
printf("%c",b[j]);
printf("\n");
}

以一个8为字符串为例:代码如下
#include<stdio.h>
int main()
{
int i,j;
char ch1[8],ch2[8];
for(i=0;i<8;i++)
{
printf("请输入第%d个字符",i);
scanf("%c",&ch1[i]);
fflush(stdin);
}
for(j=0;j<8;j++)
{
ch2[j]=ch1[7-j];
printf("%c",ch2[j]);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-17
#include<stdio.h>
char ch1[20];void Exchange(char arry[],int x);
void main()
{
char ch[20];

printf("输入一个字符串:(反序存储)"); gets(ch);
printf("输出字符串:");
Exchange(ch,20);
puts(ch1);
}
void Exchange(char arry[],int x)
{

int k;
int j;
int m;
for(j=0;j<x;j++)
{
if('\0'==arry[j])
{
m=j-1;
for(k=0;k<j;k++)
{
ch1[k]=arry[m];
m--;
}
ch1[k]='\0';
break;
}
}

}追问

请问exchange是什么意思啊,我们还没学啊,我们刚学到数组这啊

追答

就是 自己写的一个函数,自己命名的函数名。

本回答被网友采纳
第2个回答  2012-12-17
for(i=strlen(a)-1,j=0;i>=0;i--){b[j]=a[i];j++;只要一个循环就行了。
另外循环结束还要加个b[j]='/0'追问

你这只是输出的时候可以,关键是怎样把这组数转到另一组里面

追答

#include
#include
void main()
{
char a[20],b[20];
int i,j;
gets(a);
for(i=strlen(a)-1,j=0;i>=0;i--,j++)
{ b[j]=a[i]; }
b[j]='\0';
puts(b);//自己运行看吧,我输出的是b。
}

追问

那个你的b[j]=a[i];是怎么运行的?难道是从J=0开始?对应i=20?,还有啊,为什么要在最后加一个b[j]='\0'啊,这是什么意思啊

追答

就是j=0对应i=20啊,,就是依次把 a 的最后一个赋值给 b 的第0,1,2.....个,每个字符串都要以'\0'结尾的。比如定义a[]="abc",其实a里面的元素一共是{'a','b','c','\0'}。

追问

那为什么不写成for(i=20,j=0;i>=0,j<=20;i--,j++)?

追答

如果定义a[10]="abcd",那么stren(a)==4,那你说现在a[10]等于多少?a[0],a[1],a[2],a[3]等于多少??

追问

哦,你的意思是说,如果从i=0开始,那么我就默认了它一定有10个字符,而用strlen()函数,则是根据我的输入而定的是吧,但是J=0,加上一个b[j]="\0",则是保证了从a[20]里能复制到b[20]里所有的输入的数,对吧?

追答

恩差不多,就是20是你定义的数组最大空间,struct()的值是实际占用的空间。
编译器扫描每个字符串是遇到'\0'结束的。比如a[]="abc",puts(a); puts函数先扫描到'a',再是'b',再是'c',再是'\0',碰到'\0'就结束扫描。就输出abc,如果你后面不加'\0',就会无限扫描,会出乱码。

本回答被提问者采纳
第3个回答  2017-07-20
#include <stdio.h>
#include <string.h>
#define MXN 1100
char Arr[MXN],Rev[1100];
int main()
{
scanf("%s",Arr);
int Len=strlen(Arr);
int wi;
for(wi=1;wi<=Len;++wi)
    Rev[Len-wi]=Arr[wi-1];
 printf("%s",Rev);
 return 0;
 }

相似回答