题目:将字符数组中的字符串逆序存放
(1)方法1:利用两个字符数组实现字符串的逆序存放。用数组a存储逆序前的字符串,用数组b存储逆序后的字符串。注意:数组b中存储的字符串必须有结束标志’\0’。通过赋值实现。
(2)方法2:利用一个字符数组实现字符串的逆序存放,即在原数组中将字符串进行逆序。借助一个中间变量temp,将字符数组中首尾对称位置的元素(不包括结束符’\0’)互换。
分析:(1)输入字符串可能含空格,用gets() 。输出用puts().
(2)因为需要逆序的字符的下标为0~最后一个有效字符的下标,可以用strlen(char*s) (计算字符串s的长度,不包括'\0')函数,计算出字符串长度,再减去1,得到最后一个有效字符的下标。调用此函数,需定义头文件string.h
#include<stdio.h>
#include<string.h>
int main(void)
{
/*用两个字符数组实现逆序*/
char str1[80],str2[80];
int i,j=0,length;
gets(str1);//输入字符串
length=strlen(str1);
for(i=length-1;i>=0;i--)//从数组str1中最后一个有效字符开始取
{
str2[j]=str1[i];//依次存到数组str2中,下标从0开始
j++;//每存一个加1
}
str2[j]='\0';
puts(str2);
/*一个数组实现逆序*/ {
char str[80];
int i,j=0,temp,len;
gets(str);
len=strlen(str);
i=len-1;//最后一个有效字符
j=0;//交换后的下标
while(j<i){
temp=str[i];
str[i]=str[j];//最后一个和最前面一个交换
str[j]=temp;
i--;
j++;
}
puts(str);}
return 0;
}