徐梵溪平凡的岁月舞蹈:c语言问题

来源:百度文库 编辑:高校问答 时间:2024/04/29 20:09:36
#include<stdio.h>
#include<string.h>
void inverse(char str[]);
void main()
{
char str[100];
printf("input string");
scanf("%s",str);
inverse(str);
printf("inverse string:%s\n",str);
}
void inverse(char str[])
{
char t;
int i,j;
for(i=0,j=strlen(str);i<strlen(str)/2;i++,j--)
{
t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
从for这里到后面的意思看不懂,不知道是运行是么程序
我知道是给字符串反序,但就是不理解里面的代码,尤其是for里的,和后面的

这个程序的作用是反转一个字符串,比如一个串是abcd,那么它输出的结果就是dcba。

在inverse函数的for循环中,首先初始化i=0,j=参数str的字符个数(strlen是系统函数,包含在string.h中,用来求一个字符串的字符个数,也就是长度),然后i递增,j递减,知道i<参数str长度的一半。这就是从一个串的首尾逐渐向中间遍历的方式,每次把首位的字符对调,直到中间,这样最后整个str都前后颠倒了,实现了反转的算法。

将一个数组反序。