-
#include ""
void main()
int m,n;
int i,j;
int a[100][100],b[100][100],c[200][200];
printf("請輸入矩陣的行和列");
scanf("%d,%d",&m,&n);
printf("請為 %d 行 %d 列輸入矩陣 a",m,n);
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
printf("請輸入矩陣 b 作為 %d 行 %d 列",m,n);
for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);
for(i=0;ifor(j=0;jc[i][j]=a[i][j]+b[i][j];
printf("A+B 結果為:");
for(i=0;ifor(j=0;jprintf("%-3d",c[i][j]);
printf("");
錯誤 1:宣告的變數必須位於表示式之前。
錯誤 2:宣告陣列時,需要宣告其長度。
-
認為第三個矩陣沒有初始化,系統會給它乙個預設的隨機值(通常是乙個大的負數),你應該開始將其全部歸零。
-
最主要的是定義陣列時使用變數。
事實上,您可以定義乙個動態的兩位數陣列。
int m,n;
printf("請輸入矩陣的行和列");
scanf("%d,%d",&m,&n);
int **a;
a=(int **malloc( m*sizeof(int *) 定義第一列。
for(int i=0;ia[i]=(int *)malloc(n*sizeof(int )) 定義行。
這樣你就不會出錯。
-
必須首先定義陣列的長度。
-
如果陣列不是動態分配的,則 m>0 和 n>0
如果是動態陣列,則 m>=0, n>=0; 即使是 m<0,n<0 情況也允許在未定義的訪問上。
-
使用 malloc 實現它:
int m,n;
int i,j;
int *p;
scanf("%d%d",&m,&n);
p=(int *)malloc(sizeof(int)*m*n);
p+m*i+j) 等價於元素 for(i=0; i
int main(void)
-
#include
#include
int main()
int n,m,i,j;
int a[4][4];
int row=0,col=0;
int min=100000;給 min 乙個足夠大的數字 printf("請輸入 n 和 m");
scanf("%d%d",&n,&m);
printf("請輸入 n 行和 m 列的陣列");
for( i=0;i
-
int i,j,n,m;
int min,h,l;min、h、l表示最小值,行下標和列下標分別為下標。
int a[,]
for(i=0;i a[i,j]}
-
這個問題有很多方法可以處理,關鍵要看你是一次移動乙個倉位還是多倉位,如果是乙個倉位,那麼就設定乙個tmp變數,如果一次移動多個倉位,那麼就需要設定另乙個陣列一次移動乙個倉位, 那麼在乙個迴圈中移動 m 次就好了,for(i=0; 如果我移動了多個位置,那麼最好為 (i=0; ib[i+n-m]=a[i];
for(i=m;ib[i]=a[i-m];
-
for(i=0;iscanf("%d ",p);
你沒有看到迴圈末尾的分號嗎? 這將進入乙個空迴圈,這意味著您只輸入陣列的最後乙個值。 scanf("%d ",p);不要在 %d 後面新增空格。 沒有其他問題。
for(i=0;iscanf("%d",p);
-
void main ()
printf("請輸入您要交換的號碼:");
scanf("%d",&m);
printf("%d ",m);
xs(p,a,n,m);
void xs(int *p,int a[100],int n,int m) 沒有改變,但如果直接在函式中使用 p+m+j 是有可能越線的,所以應該限制它。
for(j=0;jprintf("%d ",*p);
如果要接受 A 陣列中的所有數字,而 B 只接受滿足條件的數字,則會使 B 無法正常輸出,在這種情況下,初始化 B 並包含 >>>More