字符逆序
任务描述
题目描述:输入一个字符串,输出反序后的字符串。
输入
一行字符
输出
逆序后的字符串
测试说明
样例输入:
123456abcdef
样例输出:
fedcba654321
(1)直接逆序输出
#include<stdio.h>
#include<string.h>
int main()
{
char a[1000];
gets(a);
for(int i = strlen(a) - 1;i >= 0;i--)
printf("%c", a[i]);
return 0;
}
(2)函数实现
#include <string.h>
#include <stdio.h>
#define N 81
void fun(char*s)
{
/**********Program**********/
int i, l, t;
l = strlen(s);
for(i = 0;i < l/2;i++)
{
t = s[i];
s[i] = s[l - i - 1];
s[l - i - 1] = t;
}
/********** End **********/
}
void main()
{
char a[N];
printf("Enter a string:");
gets(a);
printf("The original string is:");
puts(a);
fun(a);
printf("\n");
printf("The string after modified:");
puts(a);
}
(3)使用静态变量
#include<stdio.h>
#include<string.h>
char reverseOutput(char *s)
{
static int k = 0;//设置为静态变量即只初始化一次
k++;
int i = strlen(s) - k;
if(i >= 0) return s[i];
}
int main()
{
char str[100];
scanf("%s", str);
for(int i = 0;str[i];i++)
printf("%c", reverseOutput(str));
return 0;
}
(4)线性表实现字符逆置
#include<stdio.h>
#include<string.h>
#define MAXSIZE 100
typedef char ElemType;
typedef struct{
ElemType elem[MAXSIZE];
int last;//线性表中最后一个元素在elem[]中的位置(下标值)
}Seqlist;
void Reverse(Seqlist *L)
{
if(L->last <= 0) return ;
else{
ElemType temp;
for(int i = 0;i < (L->last)/2;i++)
{
temp = L->elem[i];
L->elem[i] = L->elem[L->last-i-1];
L->elem[L->last-i-1] = temp;
}
}
}
void Initlist(Seqlist *L)
{
gets(L->elem);
L->last = strlen(L->elem);
}
void Printlist(Seqlist L)
{
for(int i = 0;i < L.last;i++)
printf("%c", L.elem[i]);
}
int main()
{
Seqlist L;
Initlist(&L);
Reverse(&L);
Printlist(L);
return 0;
}