gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:02:36 41 4
gpt4 key购买 nike

/*
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/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com