或者說我還需要怎么改進我的代碼才能達到要求啊



uj5u.com熱心網友回復:
復制粘貼代碼不是比截圖再上傳圖片更方便些嗎uj5u.com熱心網友回復:
內外回圈的遞增變數(i)混用了uj5u.com熱心網友回復:
復制粘貼的代碼在這兒看起來很亂
所以我就只有截圖了
uj5u.com熱心網友回復:
好的 謝謝 我去改了試試
uj5u.com熱心網友回復:
大佬 我照你的改了 回圈是可以了 結果也和要求的一樣了 但是提交到平臺還是報runtime error 請問是什么問題啊 求告知 非常感謝
uj5u.com熱心網友回復:
沒看完,這道題的題的意思也沒怎么看懂,不知道你的程式邏輯會不會有問題,不過代碼還是有點問題的,f[i][j]這里,你的f陣列申請為int**[] 型別,它表示,每個陣列成員都是int**型別,即每個陣列成員都是一個指向int*指標的指標,而照你的使用方法f[i][j]來看,你應該是想申請一個二維陣列,二維陣列不是這么申請的,你可以回圈創建一些陣列,讓前面你的int**陣列的成員來保存它們的首地址,但這樣顯然太麻煩了。
申請二維陣列最簡單的辦法就是像申請一位陣列那樣,int arr[a][b],a、b是整型變數,這是C99引入的變長陣列,即用變數指定申請陣列的長度。
如果要用malloc的話,最簡單的辦法就是申請一個一維陣列,因為二維陣列本質上就是在一維上順序排列的,比如int arr[5][4],那就是每4個元素為一個小組,這四個元素位置是相連的,大陣列中一共有5個這樣的小組,這5個小組也一樣是相連的,你只要確定好位置方位就可以了,比如要使arr[i][j]賦值1,首先申請記憶體 int *arr = malloc( 5*4*sizeof(int) ),這里malloc回傳的是void*指標,不需要強轉,接著*( arr+ i*4+j ) = 1,或者 arr[ i*4+j ] =1;
如果一定要用malloc申請二維陣列,應該這樣申請:int (*arr)[4] = malloc( sizeof(4*5*sizeof(int)) ), 使用時 arr[i][j]=1;
uj5u.com熱心網友回復:
內外回圈的遞增變數(i)混用了
大佬 我照你的改了 回圈是可以了 結果也和要求的一樣了 但是提交到平臺還是報runtime error 請問是什么問題啊 求告知 非常感謝
沒看完,這道題的題的意思也沒怎么看懂,不知道你的程式邏輯會不會有問題,不過代碼還是有點問題的,f[i][j]這里,你的f陣列申請為int**[] 型別,它表示,每個陣列成員都是int**型別,即每個陣列成員都是一個指向int*指標的指標,而照你的使用方法f[i][j]來看,你應該是想申請一個二維陣列,二維陣列不是這么申請的,你可以回圈創建一些陣列,讓前面你的int**陣列的成員來保存它們的首地址,但這樣顯然太麻煩了。
申請二維陣列最簡單的辦法就是像申請一位陣列那樣,int arr[a][b],a、b是整型變數,這是C99引入的變長陣列,即用變數指定申請陣列的長度。
如果要用malloc的話,最簡單的辦法就是申請一個一維陣列,因為二維陣列本質上就是在一維上順序排列的,比如int arr[5][4],那就是每4個元素為一個小組,這四個元素位置是相連的,大陣列中一共有5個這樣的小組,這5個小組也一樣是相連的,你只要確定好位置方位就可以了,比如要使arr[i][j]賦值1,首先申請記憶體 int *arr = malloc( 5*4*sizeof(int) ),這里malloc回傳的是void*指標,不需要強轉,接著*( arr+ i*4+j ) = 1,或者 arr[ i*4+j ] =1;
如果一定要用malloc申請二維陣列,應該這樣申請:int (*arr)[4] = malloc( sizeof(4*5*sizeof(int)) ), 使用時 arr[i][j]=1;
哇 非常感謝 已經解決了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/74510.html
標籤:C語言
上一篇:C# winform利用hook技術操縱微信 向陌生手機號發送添加好友的資訊
下一篇:病毒致死率程式
