1 回答

TA貢獻1797條經驗 獲得超6個贊
問題主要是二維數組的創建問題函數可改為下面的函數,加的語句我注釋了,動態分配內存。
其次是釋放內存的函數最好也改一下,這我不太清楚,我寫的貼在下面了。
最后,main()函數最好加上return 0;不然會有警告。(個人看法)
#include<iostream>
#include <cstdlib>
#include<ctime>
#include<cstring>
using namespace std;
void create( char **&ap, int n )
{
srand(time(0)); // 可簡化
ap = new char*[n]; // 此語句不可少
int a;
int i,j;
a=rand()%2;
for(i=0;i<n;i++) {
ap[i] = new char[n];
for(j=0;j<n;j++) {
if (a==0)
ap[i][j]='#';
else
ap[i][j]='.';
}
}
}
void output(char**&ap,int n )
{ int i,j;
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
cout<<ap[i][j]<<" ";
cout<<endl;
}
}
void freeArr(char**&ap,int n)
{
for( int i = 0; i < n; i++ )
delete [] ap[ i ];
delete [] ap;
}
int main()
{
char **ap = NULL;
int n;
cout << "輸入矩陣的階:";
cin >> n;
create( ap, n );
cout << "\n形成矩陣:\n";
output( ap, n );
freeArr(ap, n);
return 0;
}
- 1 回答
- 0 關注
- 79 瀏覽
添加回答
舉報