c程序查找调用函数

固定的

两个整数分别存放在数组a 1 和a 2 中,乘积的计算过程与计算相同,但没有输出正确的结果。问题是:想要产生 312*321 = 1 0 0 1 5 2 但这个第一个程序产生?0 9 9 11 5 2 产生正确的结果 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 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,调用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....
    }**
Tiefan Ju

试试这个;

void func(int a[], int digit)
{
    int i, c = 0;
    for(i = 0; i < digit; i ++)
    {
        a[i] += c;
        c = a[i] / 10;
        a[i] = a[i] % 10;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章