全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:707
推到 Plurk!
推到 Facebook!

C語言的一個指標問題

尚未結案
dragonliu01
一般會員


發表:19
回覆:16
積分:7
註冊:2004-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-21 16:22:23 IP:134.208.xxx.xxx 未訂閱
題目是這樣的: 例如陣列大小為3,輸入資料為1,2,3;轉換1個空格(pos),印出為312    以下為我寫的程式碼,不過印出為111... 麻煩大大幫我看看錯誤吧>_<    #include #include void cshift_array(int *,int , int); int main(void){ int *array; int length,pos,i; printf("輸入陣列大小\n"); scanf("%d",&length); printf("輸入字元\n"); for(i=0;i
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-21 21:34:32 IP:221.169.xxx.xxx 未訂閱
程式碼都亂掉了,麻煩找一下版規,看程式碼要怎麼貼才會正確顯示 另外,「我希望是直接將array變數取代,而不適用address變換的方法」這句話是什麼意思?
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-21 22:20:26 IP:211.76.xxx.xxx 未訂閱
dragonliu01 您好:    在不改變您的程式邏輯下,建議有兩個地方需要修正: 1. int *array; //只是宣告一個指標變數,並不保證提供足夠得記憶體空間儲存資料。 int array[10]; // 或您需要的長度 2.在cshift_array(.)中,您交換數值前並未將原有的值儲存起來,所以有些舊值會被覆蓋掉,底下程式您請參考:
void cshift_array(int *array,int length, int pos)
{
  int i,p,temp;
  
  for (p=0; p0;i--)
          { *(array i)=*(array i-1);
          }
       *array = temp;     
     }
}
RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
dragonliu01
一般會員


發表:19
回覆:16
積分:7
註冊:2004-12-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-21 22:57:48 IP:134.208.xxx.xxx 未訂閱
抱歉.... 我的意思是說..例如 陣列位置口 口 口 口 口 口 原本 1 2 3 後來 3 1 2
dragonliu01
一般會員


發表:19
回覆:16
積分:7
註冊:2004-12-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-21 23:59:41 IP:134.208.xxx.xxx 未訂閱
感謝 richtop 大大,但小弟是初學,可以解釋ㄧ下您的意思嘛??
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-22 01:07:09 IP:211.76.xxx.xxx 未訂閱
dragonliu01 您好: 感覺您好像是要做類似能循環的移動。 如果是的話,我的寫法是一次右移一個位置: 1=>2, 2=>3,...., last=>1 再根據指定的位置看要移幾次。 當然也可以另外給個陣列,先將原先的結果複製過去,再排回原陣列。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
系統時間:2024-05-19 16:10:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!