兩個整數分別存儲在數組a1和a2中,產品的計算過程與計算過程相同,但不會輸出正確的結果。 問題是:想要產生312 * 321 = 1 0 0 1 5 2,但是這第一個程序產生 ? 0 9 9 11 5 2 以產生正確的結果1 0 0 1 5 2,呼叫功能名稱func(C,N * 2)c程序查找調用函數
#include <stdio.h>
#include <stdlib.h>
#define N 3
int main()
{
int a1[N]={1,2,3};
int a2[N]={2,1,3};
int b[N][N];
int c[N*2];
int i,j;
for(i=0;i<N;i++){
for(j=0;j<N;j++)
b[i][j]=a1[j]*a2[i];
}
c[0]=b[0][0];
c[1]=b[0][1]+b[1][0];
c[2]=b[0][2]+b[1][1]+b[2][0];
c[3]=b[1][2]+b[2][1];
c[4]=b[2][2];
for(i=N*2-1;i>=0;i--)
{
printf("%d ",c[i]);
}
printf("\n");
return 0;
}
其結果是:0 9 9 11 5 2
|0|1|2| ->A1
----------------
A2<-| 0|2|4|6|
| 1|1|2|3|
| 2|3|6|9|
這個數組與321 * 312相同使用手工計算
問題:定義函數func()來輸出正確結果1 0 0 1 5 2,call func(c,N * 2);下面我以粗體顯示調用函數func()的代碼。任何想法??以及func()背後的邏輯是什麼?試驗和錯誤?這背後有算法嗎?
#include <stdio.h>
#include <stdlib.h>
#define N 3
int main()
{
int a1[N]={1,2,3};
int a2[N]={2,1,3};
int b[N][N];
int c[N*2];
int i,j;
for(i=0;i<N;i++){
for(j=0;j<N;j++)
b[i][j]=a1[j]*a2[i];
}
c[0]=b[0][0];
c[1]=b[0][1]+b[1][0];
c[2]=b[0][2]+b[1][1]+b[2][0];
c[3]=b[1][2]+b[2][1];
c[4]=b[2][2];
**func(c,N*2);**
for(i=N*2-1;i>=0;i--)
{
printf("%d ",c[i]);
}
printf("\n");
return 0;
}
**void func(int a[],int digit)
{
here no idea....
}**
這似乎是你應該修改傳入的數組,以便在打印值時獲得正確的結果。我很難理解你想要做什麼。 –
這裏的c數組有0 9 9 11 5 2結果,但由於我必須調用func函數來產生1 0 0 1 5 2,我只能修改c數組,因爲它是唯一傳遞給func的數組功能。但我不知道如何修改它,不要得到邏輯 – fiksx