永发信息网

请教这行代码temp = *(p - 1 - i);为什么是p - 1 - i

答案:2  悬赏:0  手机版
解决时间 2021-03-20 07:45
  • 提问者网友:捧腹剧
  • 2021-03-19 14:39
#include
#include
#include
int main(void)
{
char str[81];
char *p, temp;
int i, n, length;

gets(str);
for(p = str, i = 0, n = strlen(str); i < n/2; i++)
{
temp = *(p + n - 1 - i);
*(p + n - 1 - i) = *(p + i);
*(p + i) = temp;
}
puts(str);

p = str;
length = 0;

do
{
if(isalpha(*p))
length++;
else
{
if(length > 1)
{
for(i = 0; i < length/2; i++)
{
temp = *(p - 1 - i);
*(p - 1 - i) = *(p - length + i);
*(p - length +i) = temp;
}
}
length = 0;
}
}
while(*p++ != '\0');
puts(str);

return 0;
}
最佳答案
  • 五星知识达人网友:枭雄戏美人
  • 2021-03-19 15:21
这函数作用是中间对称位置交换,例如第一个与最后一个交换,第二个跟倒数第二个交换,因此是n-1-i
全部回答
  • 1楼网友:duile
  • 2021-03-19 16:08
支持一下感觉挺不错的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯