c - 从二维数组分配和打印 C

标签 c

/*
Program to calculate trip and plan flights
*/
#define TRIP 6 
#define DEST 1
#include <stdio.h>

int main(void)
{
  int type_num, cont_num, index, i, dest_code, trip_num, row, col;
  int travelint[TRIP][DEST]= {{0}};

  printf("Please enter the number of trips:");
  scanf("%d", &trip_num);
  for (i=0; i < trip_num ; i++)
  {
      printf("Please enter destination code:");
      scanf("%d", &dest_code); 

      cont_num = dest_code / 10000;
      type_num = dest_code/1000 - cont_num*10;

      if ( (cont_num <= 7) && (cont_num > 0) &&  (type_num <= 5) && (type_num >=0) )
          dest_code = travelint[i][0];  
      else
          printf("Invalid code\n");

   }
   printf("%2d", travelint[0][0]);  
   return 0;  
}

我在从数组打印时遇到问题,我不确定是否打印错误或者该数字实际上并未在数组中分配。我仍然对从输入分配值到数组的概念有疑问。

最佳答案

行中只有一个元素的数组维度毫无意义。通常,您仅使用每行中包含多个元素的维度。

此外,您永远不会分配给 travelint 数组 - 只是从中读取。因此,由于它被初始化为全零,所以当您打印它时,您将看到的都是零。

您可能只需要更改此设置:

  if ( (cont_num <= 7) && (cont_num > 0) &&  (type_num <= 5) && (type_num >=0) )
      dest_code = travelint[i][0];  

至:

  if ( (cont_num <= 7) && (cont_num > 0) &&  (type_num <= 5) && (type_num >=0) )
      travelint[i][0] = dest_code; 

这分配给travelint

要打印完整的二维数组,您通常会使用:

for (int j = 0; j < TRIP; j++)
{
    for (int k = 0; k < DEST; k++)
        printf("Trip[%d][%d] = %d\n", j, k, travelint[j][k]);
}

鉴于内部循环将在外部循环的每次迭代中仅执行一次(在您的示例中,DEST 为 1),您可以将其简化为:

for (int j = 0; j < TRIP; j++)
{
    printf("Trip[%d][%d] = %d\n", j, 0, travelint[j][0]);
}

您应该在用户输入trip_num后对其进行验证。您应该检查 scanf() 是否实际转换了一个值;如果用户输入“A”,那么您的程序将进入快速循环,每次都会打印出“无效代码”。始终检查输入是否成功。理论上,您还应该检查输出是否成功,但该规则通常被忽视而不是被遵守。另外,如果用户很讨厌并输入 200,那么在用户输入第六个旅行目的地后,您的程序将不会高兴。当然,它应该在 0 和 TRIP(含)之间。当然,您应该正确处理退化 (0) 的情况。打印循环变为:

for (int j = 0; j < trip_num; j++)
{
    printf("Trip[%d][%d] = %d\n", j, 0, travelint[j][0]);
}

关于c - 从二维数组分配和打印 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5096790/

相关文章:

c - 如何计算这个递归函数的时间复杂度? (英国标准时间)

c - 找出一个 C 循环

c - 用 C 中充满数字的 char 数组填充 int 数组(char 数组到 int 数组)

c - C 中的哪些对象声明导致存储被保留(即定义)?

php - 如何为 8 名玩家创建 7 轮的独特玩家组合

python - 识别 C 项目中所有变量的类型

c - 设置 clang 默认选项?

c - 如何将结构列表添加到现有结构

c - 从套接字读取()每次都需要额外的输入(C编程远程shell)

C - argv[] 传入 * 作为参数,打印时返回 1