2つの整数がそれぞれa 1とa 2の配列に格納され、計算と同じ手順で計算されますが、正しい結果は出力されません。 質問は:312 * 321 = 1 0 0 1 5 2を生成したいが、この最初のプログラムは を生成する? 0 9 9 11 10 2cプログラム呼び出し関数の呼び出し
|0|1|2| ->A1
----------------
A2<-| 0|2|4|6|
| 1|1|2|3|
| 2|3|6|9|
:1 0 0 1 5 2、関数名funcを呼び出す(C、N * 2)
#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 10 2
この配列は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を生成しなければならないので、funcに渡された唯一の配列であるため、関数。しかし、私はそれを変更する方法を知らない、論理を取得しないでください – fiksx