看板 C_and_CPP 關於我們 聯絡資訊
例子: 輸入data:12345 輸入決定:3 輸出:32145 再輸入決定:4 輸出:41235 其實就是把資料放在一個stack中, 再將指定的數字前的資料(含指定數字)放入queue中,再放回stack中 自己寫了一個很醜的程式碼如下: 想法是直接在儲存資料的array上動手腳 #include<iostream.h> #include<string.h> void finalstate(char*,char*,char*); int main() { char data[20]; char temp[20]; char rule[20]; printf("輸入資料:"); scanf("%s",data); printf("指定資料:"); //輸入一連串的,例如第一次3,第二次是5,則輸入35 scanf("%s",rule); //再讓程式一次跑完顯示最後結果 finalstate(data,rule,temp); system("pause"); } void finalstate(char data[],char rule[],char temp[]) {int c=0; int length=strlen(data); for(int i=0,j=0,k=0 ; i<length-1 ; i++) { while(data[j]!=rule[i]) //似乎是這個while有問題 {temp[k++]=data[j++];} temp[k++]=data[j++]; k=0; while(j>=0) {data[j--]=temp[k++];} k=0;j=0 ; } printf("%s",data); } 我的執行結果會有問題,不是出現亂碼就是程式跑一下就將視窗關閉 目前debug覺得應該是第一個while有問題 請問該如何修改? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.51.16
loveme00835:i 跑出陣列範圍了 06/11 00:27
conan77420:i不是到string 的長度而已嗎?應該沒有超過吧@_@ 06/11 00:37
loveme00835:data 跟 rule 不一樣長度喔! 所以要分開看 06/11 00:39
loveme00835:應該說跑出字串範圍, 所以才會有亂碼 XD 06/11 00:41
loveme00835:while 迴圈也沒有讓他比到 '\0' 即結束 06/11 00:42