检查稀疏矩阵

CCBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

稀疏矩阵(Sparse matrix)是指矩阵中 0 的数量多于非零元素数量的矩阵。在这个逐步的实验中,我们将学习如何使用 C 语言编程来检查一个二维数组是否是稀疏矩阵。

注意:你需要自己创建文件 ~/project/main.c 来练习编码,并学习如何使用 gcc 编译和运行它。

cd ~/project
## 创建 main.c
touch main.c
## 编译 main.c
gcc main.c -o main
## 运行 main
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("`C`")) -.-> c/ControlFlowGroup(["`Control Flow`"]) c(("`C`")) -.-> c/CompoundTypesGroup(["`Compound Types`"]) c(("`C`")) -.-> c/UserInteractionGroup(["`User Interaction`"]) c/ControlFlowGroup -.-> c/if_else("`If...Else`") c/ControlFlowGroup -.-> c/for_loop("`For Loop`") c/CompoundTypesGroup -.-> c/arrays("`Arrays`") c/UserInteractionGroup -.-> c/user_input("`User Input`") subgraph Lab Skills c/if_else -.-> lab-123224{{"`检查稀疏矩阵`"}} c/for_loop -.-> lab-123224{{"`检查稀疏矩阵`"}} c/arrays -.-> lab-123224{{"`检查稀疏矩阵`"}} c/user_input -.-> lab-123224{{"`检查稀疏矩阵`"}} end

创建二维数组

在这一步中,我们将创建一个二维数组来存储矩阵元素。我们将通过用户输入获取矩阵的行数和列数,然后使用嵌套的 for 循环让用户逐个输入矩阵元素。

#include <stdio.h>

int main()
{
   int matrix[10][10], row, column, i, j;
   printf("请输入矩阵的行数和列数:\n");
   scanf("%d%d", &row, &column);

   printf("请输入矩阵的元素:\n");
   for (i = 0; i < row; i++)
   {
      for (j = 0; j < column; j++)
      {
         scanf("%d", &matrix[i][j]);
      }
   }

   // 检查矩阵是否为稀疏矩阵
    int counter = 0;
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < column; j++)
        {
            if (matrix[i][j] == 0)
                counter++;
        }
    }

    if(counter > (row * column) / 2)
        printf("该矩阵是稀疏矩阵\n");
    else
        printf("该矩阵不是稀疏矩阵\n");

   return 0;
}

打印矩阵

在这里,我们将使用嵌套的 for 循环打印矩阵,其中我们已经获取了用户的输入。

#include <stdio.h>

int main()
{
   int matrix[10][10], row, column, i, j;
   printf("请输入矩阵的行数和列数:\n");
   scanf("%d%d", &row, &column);

   printf("请输入矩阵的元素:\n");
   for (i = 0; i < row; i++)
   {
      for (j = 0; j < column; j++)
      {
         scanf("%d", &matrix[i][j]);
      }
   }

   // 打印矩阵
   printf("矩阵:\n");
   for (i = 0; i < row; i++)
   {
      for (j = 0; j < column; j++)
      {
         printf("%d ", matrix[i][j]);
      }
      printf("\n");
   }

   // 检查矩阵是否为稀疏矩阵
    int counter = 0;
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < column; j++)
        {
            if (matrix[i][j] == 0)
                counter++;
        }
    }

    if(counter > (row * column) / 2)
        printf("该矩阵是稀疏矩阵\n");
    else
        printf("该矩阵不是稀疏矩阵\n");

   return 0;
}

完成程序

在这里,我们将为程序添加最后的完善部分。我们将检查用户提供的矩阵是否为稀疏矩阵,并打印结果以显示它是否是稀疏矩阵。

#include <stdio.h>

int main()
{
   int matrix[10][10], row, column, i, j;
   printf("请输入矩阵的行数和列数:\n");
   scanf("%d%d", &row, &column);

   printf("请输入矩阵的元素:\n");
   for (i = 0; i < row; i++)
   {
      for (j = 0; j < column; j++)
      {
         scanf("%d", &matrix[i][j]);
      }
   }

   // 打印矩阵
   printf("矩阵:\n");
   for (i = 0; i < row; i++)
   {
      for (j = 0; j < column; j++)
      {
         printf("%d ", matrix[i][j]);
      }
      printf("\n");
   }

   // 检查矩阵是否为稀疏矩阵
    int counter = 0;
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < column; j++)
        {
            if (matrix[i][j] == 0)
                counter++;
        }
    }

    if(counter > (row * column) / 2)
        printf("该矩阵是稀疏矩阵\n");
    else
        printf("该矩阵不是稀疏矩阵\n");

   return 0;
}

总结

在这个逐步的实验中,我们学习了如何检查一个二维数组是否为稀疏矩阵。我们了解了稀疏矩阵的概念,并学习了如何使用 C 语言编写代码来判断一个矩阵是否为稀疏矩阵。我们创建了一个二维数组,获取了用户输入,打印了矩阵,并最终编写了逻辑来检查提供的矩阵是否为稀疏矩阵。

您可能感兴趣的其他 C 教程