在2D数组中搜索2个数字的乘积

时间:2018-11-05 14:14:01

标签: c

我的代码的目的是在2D数组乘法表中找到a和b的乘积,并在其下面添加一个“ ^”。不确定该怎么做,这是我到目前为止所做的

#include <stdio.h>

int main(){
    int i = 0,j = 0,a,b;
    int array[15][15];

    printf("Enter a value: ");
    scanf("%d",&a);
    printf("Enter another value: ");
    scanf("%d",&b);

    for (i = 0; i < 15; i++){
        for (j = 0; j < 15; j++){
            array[i][j] = (i + 1) * (j + 1);
            printf("[%d]\t", array[i][j]);
        }
        printf("\n");
    }

    return 0;
}

2 个答案:

答案 0 :(得分:0)

首先,您需要找到array[i][j] == a * b的位置。您可以在分配给array[i][j]之后立即执行此操作。

然后您需要保存该职位。

在打印换行符之后,您需要打印另一行如果,找到该值,然后将“标记”放置在正确的位置。

答案 1 :(得分:0)

您需要引入一个“标志”变量来告诉您是否找到了匹配项。此外,您需要一个变量来保存匹配的行索引。

类似的东西:

#include <stdio.h>
#include <stdlib.h>

// Use a define so it's easy to change size of the array
#define DIM 15

int main(){
    int i = 0,j = 0,a,b;
    int array[DIM][DIM];

    int match = 0;      // Match flag
    int match_pos = 0;  // Position of match

    printf("Enter a value: ");
    if (scanf("%d",&a) != 1) exit(1);   // always check the value returned by scanf
    printf("Enter another value: ");
    if (scanf("%d",&b) != 1) exit(1);
    printf("\n");

    for (i = 0; i < DIM; i++){
        for (j = 0; j < DIM; j++){
            array[i][j] = (i + 1) * (j + 1);
            printf("[%d]\t", array[i][j]);

            // Do we have a match?
            if (a*b == array[i][j])
            {
              // yes, set flag and save position
              match = 1;
              match_pos = j;
            }
        }
        printf("\n");

        // Did we have a match?
        if (match)
        {
          // yes
          match = 0;                                   // clear flag
          for (j=0; j < match_pos; ++j) printf("\t");  // print match_pos tab
          printf(" ^\n");                              // print the ^
        }
    }

    return 0;
}