亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

求大神,哪里錯了?

#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;

}

為什么沒交換?

正在回答

2 回答

//倒序打印

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

1 回復 有任何疑惑可以回復我~
#1

qq_愿時光安好_04050009 提問者

萬分感謝,但我有一個問題,你的公式不能通用吧... 2.假如需要交換的下標不是從零開始而是一部分 7到15,應該是((length-1)+index)/2 對嗎? 這個公式能通用不? 長度-1得到最大下標,+最小下標再除以2 應該是中位數吧... 應該沒記錯....
2017-01-30 回復 有任何疑惑可以回復我~

講的不錯,受益匪淺,本人自己總結了C語言的基本學習知識,函數語法 數據結構 鏈表 數組 指針等視頻合集給大家提供學習,需要學習的,包括有學習相關問題,可以進入(裙:834597065)交流,里面有眾多大佬幫助解決學習、技術問題,只針對C/C++問題哦

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Linux C語言結構體
  • 參與學習       118436    人
  • 解答問題       166    個

C語言的深入,幫助小伙伴們進一步的理解C語言,趕緊看過來

進入課程

求大神,哪里錯了?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號