请一道C语言题目的算法.

来源:百度知道 编辑:UC知道 时间:2024/05/21 16:48:17
程序源代码我有了,~就是不太理解.
请各位高人帮帮忙.~帮我说一下算法,细致一点,谢谢了.~~~
最主要的是FOR循环里面的那些语句能不能着重的说一下.
刚学的菜鸟.~大家见笑了.~

#include <stdio.h>
#include <string.h>
int inverse(char str[])
{
char t;
int i,j;
for(i=0,j=strlen(str);i<j;i++,j--)
{
t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}

main()
{
char str[100];
printf("请输入一个字符串:\n");
scanf("%s",str);
printf("转换前字符串为:\n%s\n");
inverse(str);
printf("转换后字符串为:\n%s\n");
}

-----------------------------------
char str[100];
printf("请输入一个字符串:\n");
scanf("%s",str);
printf("转换前字符串为:\n%s\n");
inverse(str);
-----------------------------------
开始的时候,弄一个长度最多为100的char数组,然后把这个数组作为参数给inverse这个function.inverse得到这个参数之后开始运行。
-----------------------------------
for(i=0,j=strlen(str);i<j;i++,j--)
{
t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
-----------------------------------
for(起始条件;运行条件;每一循环结束后的附加计算)
这个for的起始条件是:i=0 而且 j=参数数组的具体长度(strlen取得数组的具体长度,而不是最大长度)
size_t strlen ( const char * str );
Returns the length of str.
http://www.cplusplus.com/reference/clibrary/cstring/strlen/
这个for的运行条件是:i < j。也就是说,只要i<j,那么就运行for后面大括号的内容。
每一循环结束后的附加计算:i = i + 1; j = j - 1.

如果数组是 abcdefg
那么第一次循环 i