C语言程序设计:编写程序,将一个字符串存放在数组中,并按逆序输出。

如题所述

反序字符串,只需要将首尾字符依次调换即可。

#include <stdio.h>
#include <string.h>

// 反序字符串x并返回
char* reverse(char *x)
{
    int len = strlen(x);
    int i, n = len / 2;
    char tem;
    for (i = 0; i <= n; i++)
    {
        tem = x[i];
        x[i] = x[len - 1 - i];
        x[len - 1 - i] = tem;
    }
    return x;
}

int main()
{
    char str[100];
    printf("input a string :");
    gets(str);
    puts(reverse(str));
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-11-12
楼上的程序存在两个缺点:1.循环次数过多 2.多次调用putchar,效率过低

lz可以参考下面的代码,效率比较高一点,而且相对来说代码比较漂亮一点。

#include <stdio.h>
#include <string.h>

#define SWAP(x, y) { \
x = x ^ y; \
y = x ^ y; \
x = x ^ y; \
}

void reserveArr(char *ch)
{
int i = 0;
int j = strlen(ch) - 1;

while (i < j) {
SWAP(ch[i], ch[j]);
i++;
j--;
}
}

int main()
{
char ch[1024] = {0};

gets(ch);
reserveArr(ch);
printf("ch = %s\n", ch);
}
第2个回答  2008-11-12
#include "stdio.h"
#include "string.h"

void main()
{ void inverse(char str[]);
char str[100];
printf("请输入一行字符串:\n");
scanf("%s",str);
inverse(str);
printf("反序字符串为:\n");
printf("%s\n",str);
}
void inverse(char str[])
{ char t;
int i,k;
k=strlen(str)-1;
for(i=0;i<(strlen(str)/2+1);i++,k--)
{
t=str[i];
str[i]=str[k];
str[k]=t;

}
}本回答被网友采纳
第3个回答  2008-11-12
用栈
第4个回答  2008-11-12
#include<stdio.h>
#include<string.h>
main()
{
char a[100];
int n,i;
gets(a);
n=strlen(a)-1;
for(i=n;i>=0;i--)
putchar(a[i]);
getch();
}

win-tc试过了。。

c语言程序 输入一字符串存入数组中,逆序存放并输出
这篇文章主要讲解如何使用C语言编程,将用户输入的字符串逆序存储在原数组中,并输出结果,无需调用内置的字符串处理函数。例如,当我们输入字符串 "hello" 和 "world",程序会将它们逆序变成 "dlrow" 和 "olleh"。字符串在C语言中,本质上是字符数组,每个字符占用数组的一个位置。值得注意的是,字符...

c语言程序 输入一字符串存入数组中,逆序存放并输出
对键盘输入的字符串进行逆序,逆序后的字符串仍然保留在原来的字符数组中,最后输出。(不得调用任何字符串处理函数),例如:输入 hello world 输出 dlrow olleh

在c语言中,如何输入:输入一串字符串,将其保存到数组,然后逆序保存到另一...
for(int i=0;i<9;i++){ scanf("%c",&carr1[i]);\/\/输入字符到字符数组carr1 } for(int i=0;i<9;i++){ carr2[9-i]=carr1[i];\/\/将原来的carr1倒序放到carr2 } printf("%s",arr2);\/\/输出arr2字符数组的所有内容。} ...

如何用C语言将字符串逆序输出?
C语言程序如下: #include<stdio.h> #include<string.h> main() { int i,j,t,n; char a[10]; printf("请输入字符串:"); gets(a); n=strlen(a); for(i=0;i<=n\/2;i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } for(j=0;j<n;j++) printf("%c",a[j]); printf...

C语言:编写一个程序实现从键盘接收一个字符串,并将这个字符逆序输出
用字符数组实现,字符串长度有限制 include<conio.h> include<stdio.h> int main(void){ int i;int ch[128];for (i = 0; (ch[i] = getchar()) != '\\n'; i++);printf("\\n");for (; i >= 0; i--)printf("%c", ch[i]);getch();return 0;} 在 TC 上测试通过 用...

C语言编程:编程实现将一个数组逆序输出
1、首先打开软件VC++6.0软件,准备一个空白的C语言文件,引入头文件并写好主函数:2、然后输入代码,首先定义数组,接着用一个for循环接受用户输入的数组元素并将其打印到屏幕上,并保存到前面的数组中,然后用第二个for循环逆序排序,方法就是前面的元素和后面的元素比较大小,前面比后面小就交换顺序...

C语言。输入一个字符串按反方向存放,并将其输出。怎样编写这个程序?
include <string.h> define szSTR 256 \/*递归方式逆序存储字符串,将逆序内容写入fw底层流文件*\/ void rev(char * src, int fw){ if (!src || fw < 1) return ;if (!*src) return ; \/*如果字符串结束则返回*\/ rev(src + 1, fw); \/*递归到下一个字符地址*\/ write(fw, src, 1...

C语言编程,编程实现怎样将一个数组逆序输出?
数组逆序输出,只要从数组最后一位向前循环输出即可。实现代码如下:include"stdio.h"void main(){int a[100],n,m;printf("请输入元素的个数:");scanf("%d",&n);printf("请依次输入%d个数:",n);for(m=0;m<n;m++)scanf("%d",&a[m]);printf("按逆序输出为:");for(m=n-1;m>=0...

如何用C语言将字符串逆序输出?
C语言中实现字符串逆序的一个示例程序如下:```c include include int main() { int i, j, temp, length;char str[100];printf("请输入字符串: ");gets(str);length = strlen(str);for (i = 0; i < length \/ 2; i++) { temp = str[i];str[i] = str[length - 1 - i];...

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和...
s);\/\/输出反序后的字符串 return 0;} void input(char st[]){ printf("Please enter string: ");gets(st);} \/\/反序函数 void reverse(char st[]){ int n=strlen(st);for (int i=0, j=n-1, t; i<(n\/2); t=st[i], st[i]=st[j], st[j]=t, i++, j--);} ...

相似回答