反转需要改变数组的位置,逆序输出没有改变位置,谭浩强C语言书中有讲到反转整数数组的例子。
/*这段是C语言反转字符数组代码,注意如果是中文会乱码*/
#include <string.h>
#include <stdio.h>
void rever_char(char c[],int n)
{
char temp;
int i,j = n-1,m = (n-1)/2;
for(i = 0; i <= m; i++)
{
j = n-1-i;
temp = c[i];
c[i] = c[j];
c[j] = temp;
}
}
void main()
{
char my[] = "I am a student!";
int length = strlen(my);
int i;
for(i = 0; i < length; i++)
{
printf("%c",my[i]);
}
printf("\n");
rever_char(my,length);
for(i = 0; i < length; i++)
{
printf("%c",my[i]);
}
printf("\n");
}
/* 这段是C#反转字符数组的代码 */
using System;
namespace Test
{
class Class1
{
static void Main(string[] args)
{
string my = "中华人民共和国abcde";
char[] c = my.ToCharArray();
Array.Reverse(c);
for(int i = 0; i < c.Length; i++)
{
Console.Write(c[i]);
}
Console.ReadLine();
}
}
}
/* 这段是调用C++的栈库实现的逆序输出字符数组的代码,若有中文会乱码 */
#include <stack>
#include <iostream>
#include <string.h>
using namespace std;
void main()
{
stack <char> haha;
char my[] = "who are you!";
int length = strlen(my);
for(int i = 0; i < length; i++)
{
haha.push(my[i]);
}
while(!haha.empty())
{
cout<<haha.top();
haha.pop();
}
cout<<endl;
}
/* 这段是C语言逆序输出完全是中文的代码 */
#include <string.h>
#include <stdio.h>
void main()
{
char my[] = "中华人民共和国";
int length = strlen(my);
int i;
for(i = 0; i < length; i++)
{
printf("%c",my[i]);
}
printf("\n");
for(i = length - 1; i >0; i-=2)
{
printf("%c",my[i-1]);
printf("%c",my[i]);
}
printf("\n");
}