gpt4 book ai didi

c - 在 IF 语句 C 中分配变量

转载 作者:行者123 更新时间:2023-11-30 20:58:18 25 4
gpt4 key购买 nike

下面的代码是输出蜗牛完成一场比赛所需的时间。我知道要使用 if 语句,但是我正在努力寻找一种方法来分配我的最终代码 - TimeMinutes1 + TimeMinutes2 + TimeMinutes3 + TimeMinutes4、TimeSeconds1 + TimeSeconds2 + TimeSeconds3 + TimeSeconds4 一个可以与 IF 语句结合使用的变量?

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

int main()
{
char SquirrelName [20];
int TimeMinutes1;
int TimeMinutes2;
int TimeMinutes3;
int TimeMinutes4;
int TimeSeconds1;
int TimeSeconds2;
int TimeSeconds3;
int TimeSeconds4;
int TotalSeconds1;
int TotalSeconds2;
int TotalSeconds3;
int TotalSeconds4;

printf("What is the name of the squirrel? \n");
scanf("%s", SquirrelName);

printf("How long did it take to complete the first lap in Seconds? \n");
scanf("%d", &TotalSeconds1);

TimeMinutes1 = TotalSeconds1 / 60;
TimeSeconds1 = TotalSeconds1 % 60;

printf("Lap 1 finished in %d minutes and %d seconds\n", TimeMinutes1, TimeSeconds1);

printf("How long did it take to complete the second lap in Seconds? \n");
scanf("%d", &TotalSeconds2);

TimeMinutes2 = TotalSeconds2 / 60;
TimeSeconds2 = TotalSeconds2 % 60;

printf("Lap 2 finished in %d minutes and %d seconds\n", TimeMinutes2, TimeSeconds2);

printf("How long did it take to complete the third lap in Seconds? \n");
scanf("%d", &TotalSeconds3);

TimeMinutes3 = TotalSeconds3/ 60;
TimeSeconds3 = TotalSeconds3 % 60;

printf("Lap 3 finished in %d minutes and %d seconds\n", TimeMinutes3, TimeSeconds3);

printf("How long did it take to complete the fourth lap in Seconds? \n");
scanf("%d", &TotalSeconds4);

TimeMinutes4 = TotalSeconds4 / 60;
TimeSeconds4 = TotalSeconds4 % 60;

printf("Lap 4 finished in %d minutes and %d seconds\n", TimeMinutes4, TimeSeconds4);

printf("The total time it took for the course to complete was %d minutes and %d seconds\n", TimeMinutes1 + TimeMinutes2 + TimeMinutes3 + TimeMinutes4, TimeSeconds1 + TimeSeconds2 + TimeSeconds3 + TimeSeconds4);

return 0;
}

最佳答案

每当有多个以数字结尾的变量时,例如 foo1foo2foo3 等,这表明我们应该使用数组[和循环而不是复制代码]。

如果我们有多个并行数组,它们由同一个索引变量索引,例如:

#define LAPCOUNT    4
int time_tot[LAPCOUNT];
int time_min[LAPCOUNT];
int time_sec[LAPCOUNT];

这表明我们应该创建一个结构并拥有这些结构的数组。

这是使用这些想法的代码版本:

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

typedef struct {
int time_tot;
int time_min;
int time_sec;
} lap_t;

#define LAPCOUNT 4

int
main(void)
{
char SquirrelName[20];
int lapidx;
lap_t *lap;
lap_t laplist[LAPCOUNT];
lap_t laptot;

printf("What is the name of the squirrel? \n");
scanf("%s", SquirrelName);

for (lapidx = 0; lapidx < LAPCOUNT; ++lapidx) {
lap = &laplist[lapidx];

printf("How long did it take to complete lap %d in Seconds? \n",
lapidx + 1);

scanf("%d", &lap->time_tot);

lap->time_min = lap->time_tot / 60;
lap->time_sec = lap->time_tot % 60;

printf("Lap %d finished in %d minutes and %d seconds\n",
lapidx + 1,lap->time_min, lap->time_sec);
}

laptot.time_min = 0;
laptot.time_sec = 0;
laptot.time_tot = 0;

for (lapidx = 0; lapidx < LAPCOUNT; ++lapidx) {
lap = &laplist[lapidx];
laptot.time_min += lap->time_min;
laptot.time_sec += lap->time_sec;
laptot.time_tot += lap->time_tot;
}

#if 0
printf("The total time it took for the course to complete was %d minutes and %d seconds\n",
laptot.time_min,laptot.time_sec);
#else
laptot.time_min = laptot.time_tot / 60;
laptot.time_sec = laptot.time_tot / 60;
printf("The total time it took for the course to complete was %d minutes and %d seconds\n",
laptot.time_min,laptot.time_sec);
#endif

return 0;
}
<小时/>

更新:

Thanks I’ll definitely look more into this

这是 future 的一个重要概念。

如果圈数更大,例如 100 而不是 4,那么使用数组变得更加明显。

设计算法时,要问自己的一个重要问题是:我的解决方案是否“可扩展”?

struct 就像一个表单或[数据库]记录。它将所有相关的事物聚集在一起。表单是一张纸,包含有关给定主题的所有信息(例如纳税表或人事记录)。

考虑一个简单的人事记录:

typedef struct {
char person_name[100];
char person_street[100];
char person_city[100];
char person_state[2];
char person_telno[10];
int person_age;
float person_salary;
} person;

这就像每个人都有一个页面,而员工文件包含所有此类页面。

如果没有struct的想法,我们需要为上述每个记录“字段”使用单独的文件夹

姓名:

Smith, John
Jones, Fred
Miller, Mary

街道:

123 Main St
235 Elm St
63 Oak Ave

城市:

New York
Chicago
Los Angeles

使用struct,我们的组织看起来更像:

Smith, John     123 Main St     New York
Jones, Fred 235 Elm St Chicago
Miller, Mary 63 Oak Ave Los Angeles

当然,在现实世界中,这种数据组织似乎是显而易见的。但是,在编码时,特别是对于更抽象的事物,有时可能会被问题的复杂性所掩盖。

能够精炼/减少代码[通常是确保使用的数据结构最少且完整],可以保持代码简单、干净和健壮。

这甚至可能发生在经验丰富的程序员身上。在我开发的一个真正的商业产品中,我发现使用了“并行数组”。我重构了代码以使用我创建的新 struct 数组。我这样做只是为了简化/清理代码。在此过程中,我发现并修复了至少五个在清理之前隐藏且不明显的错误。

关于c - 在 IF 语句 C 中分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53159989/

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