问答详情
源自:1-1 Linux C语言结构体简介

求大神,哪里错了?

#include <stdio.h>

#include <string.h>


int main(void)

{

char word[10];

int length, index, temp;

printf ("please Enter a word:\n");

while (scanf("%s", word)==1)

{

length = strlen(word);//倒序打印

for(index=0; index<=(length+index)/2; index++) //二分 交换 

{

temp = word[index];

word[index] = word[length-index];

word[length-index] = temp;

}

printf ("%s", word);

printf ("Do you want to continue?\n");

}

return 0;

}

为什么没交换?

提问者:qq_愿时光安好_04050009 2017-01-20 00:44

个回答

  • 筑梦之队
    2017-01-20 10:46:26
    已采纳

    //倒序打印

    for(index=0; index<=length/2-1; index++)        //二分 交换 

    {

        temp = word[index];

        word[index] = word[length-index-1];

        word[length-index-1] = temp;

    }

    1、一个基本的错误为:没有意识到数组的下标是位于[0,length),所以导致出现了后面两个问题:

    2、二分交换的结束值的取值有问题。应该是length/2-1,而不是(length+index)/2

    3、交换时选择的下标有问题,应该是length-index-1,而不是length-index

  • weixin_慕移动5316475
    2020-11-09 14:43:12

    讲的不错,受益匪浅,本人自己总结了C语言的基本学习知识,函数语法 数据结构 链表 数组 指针等视频合集给大家提供学习,需要学习的,包括有学习相关问题,可以进入(裙:834597065)交流,里面有众多大佬帮助解决学习、技术问题,只针对C/C++问题哦