1. 自己写的, 用的for循环逆序输出。s[i] 已经存储了字符串 不用在输入 且注意输出格式问题。
void reverse(char s[])
{
int j, i;
//for (i = 0; (c = getchar()) !=EOF && i < MAXLINE - 1; ++i)
// s[i] = c; //
i = strlen(s);
for (j = i; j >= 0; --j)
//printf("%s", s); 输出的整个字符串
printf("%c",s[j]);
}
2. 答案书上的。
void reverse(char s[])
{
int i, j;
char temp;
i = 0; // 记得初始化
while(s[i] != '\0')
++i; // 得到s[i]的长度包括'\0' 所以 i 要减1
--i; // 这里为何 --i?
if(s[i] == '\n')
--i; // 如果字符串第二个字符为'\n', --i
j = 0;
while(j < i)
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
--i;
++j;
}
}
3. csdn上朋友写的,直接用strlen()求出len。 也可以用指针表示。
void reverse(char s[])
{
int i, len, j;
char temp;
len = strlen(s);
for(i = len - 1, j = 0; j < i; --i,++j) //这里 i为何从len - 1开始呢
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
后来看到英文 //用于消除行末的换行符,没有该函数的话,输出分为两行,第一行为一个换行符
版答案上还写了个discardnewline()函数
void discardnewline(char s[])
{
int i;
for(i = 0; s[i] != '\0'; i++)
{
if(s[i] == '\n')
s[i] = '\0';
}
}
1.19 编写函数reverse(s)将字符串s中的字符顺序颠倒过来。使用该函数编写一个程序,每次颠倒一个输入行中的字符顺序。
最新推荐文章于 2022-12-25 04:10:11 发布