看板 C_and_CPP 關於我們 聯絡資訊
#include<iostream.h> int merge(int nums1[],int length1,int nums2[],int length2) { int i,j,k=0; int result[length1+length2]; for( ;i<length1 && j<length2; ) // 判斷nums1跟nums2中值的大小,小的先 // 擺入result中 { if(nums1[i]<nums2[j]) {result[k++]=nums1[i++];} else if(nums1[i]>nums2[j]) {result[k++]=nums2[j++];} else {result[k++]=nums1[i++]; result[k++]=nums2[j++];} } //上述做完有可能將nums1全放入但 // nums2還沒放入所以: for(int l=i;l<length1;l++) //如果i沒到底則全部放入 {result[k++]=nums1[l];} for(int m=j;m<length2;m++) //如果j沒到底則全部放入 {result[k++]=nums2[m];} for(int i=0;i<8;i++) //印出新的array中的值 { printf("new array:%d",result[i]); } } int main() { int nums1[]={1,3,5,6,13}; //定義兩個內部值案小到大排好的 //array int nums2[]={3,7,13}; merge(nums1,5,nums2,3); //call副程式 system("pause"); ====================================================== compile後出現"error: invalid types `int[int]' for array subscript" 編譯器所指出的錯誤我不是很懂他所要表達的意思, 可能是小弟基本觀念哪裡有誤解,請各位指點,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.130.1
SylphWind:宣告的[]內不能是變數 請用malloc或new 04/20 11:00
※ 編輯: conan77420 來自: 61.229.130.1 (04/20 11:02)
conan77420:嗯可以了~不過我怎麼聽說宣告時放空白compile會自己去 04/20 11:05
conan77420:找,然後知道矩陣的大小是多少0.0 04/20 11:05
stonehomelaa:你聽誰說 有這麼神?? 04/20 11:06
conan77420:還有,我的答案輸出是怪怪的數字,為什麼不是內容?Q_Q 04/20 11:07
※ 編輯: conan77420 來自: 61.229.130.1 (04/20 11:14)
stonehomelaa:喔 我誤解了 你main那樣宣告OK 04/20 11:14
littleshan:你的 i 和 j 沒給初值 04/20 11:16
littleshan:不要用 iostream.h,用 iostream,不要加 .h 04/20 11:16
conan77420:其實我也誤解了,一樓說的是我的result~ 04/20 11:17
littleshan:既然用了 iostream 就別再用 printf 04/20 11:17
littleshan:若要用 printf 應該先 #include <cstdlib> 04/20 11:17
conan77420:可以了~~~謝謝各位^^ 04/20 11:18
littleshan: merge() 內印結果時,不應把 result 的大小寫死 04/20 11:18
conan77420:嗯嗯,也謝謝l大 04/20 11:23
ledia:printf -> cstdio ? ^^: 04/20 11:32
littleshan:yeah, 我筆誤了,是 cstdio 而不是 cstdlib 04/20 11:39