帮小弟看下我刚学的C语言

来源:百度知道 编辑:UC知道 时间:2024/06/06 18:47:16
/*写一函数使输入的一个字符串按反序存放在一字符数组中,然后输出。*/
#include <stdio.h>
#include <string.h>

/*函数声明部分*/
void change();

void main()
{

change();

}

/*函数定义部分,完成功能:输入一个字符串,并进行逆序*/
void change()
{

/*定义两个字符串,分别用于存储输入和逆序后的字符串*/
char input[40],output[40];
int length; /*字符串的长度*/
int i; /*循环变量*/

printf("输入的一个字符串按反序存放在一字符数组中,然后输出:\n");
printf("输入一个字符串:\n");
gets(input);
length=strlen(input);
/*进行字符串的逆序*/
for (i=0; i<(length/2); i++)
{

output[i]=input[length-i-1];
output[length-i-1]=input[i];

}
if ((length%2)!=0) /*如果字符串的长度为奇数*/

output[length/2]=input[length/2];

output[length]='\0';
printf("逆序后的字符串是:\n%s\n",output);

}
if 后的,看不明白

/*进行字符串的逆序*/
for (i=0; i<(length/2); i++)
{

output[i]=input[length-i-1];
output[length-i-1]=input[i];

}
if ((length%2)!=0) /*如果字符串的长度为奇数*/

output[length/2]=input[length/2];

可以这样/*进行字符串的逆序*/
for (i=0; i<(length - 1/2); i++)
{

output[i]=input[length-i-1];
output[length-i-1]=input[i];

}

原来的意思是奇数个就中间的不动,然后左右交换
偶数只有左右交换
我的是利用了int除法会舍小数位

因为上面for (i=0; i<(length/2); 用了length/2折半,要是长度是偶数正好,是奇数在还剩下一个数