gpt4 book ai didi

c - 使用 scanf 为数组中的每个值分配时间的程序 (C)

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:31 25 4
gpt4 key购买 nike

我正在处理将数字和名称存储到数组中的作业。我们必须将 4 个数字存储到数组中的每个数字中以秒为单位表示时间。然后将其汇总并输出为英语句子中的每个数字——以分钟和秒的格式。

这是我所拥有的,它非常小,我什至不确定它是否做了它应该做的事情:

#include <stdio.h>

int main()
{
int i = 0;
int person[8] = { 0 };

int leg1;
int leg2;
int leg3;
int leg4;

while (i < 8) {
printf("Hello, please enter the number of the person.:\n");
scanf("%d", &person[i]);
i = i + 1;
}

printf("%d ", i);
return 0;
}

理想情况下,我想为数组中的每个人记录一个名字,而不是数字 - 总共 8 个名字,但即使是我认为的数字也行不通。

我不确定是否可以使用 scanf 为代码中的每个数字分配 4 个时间值。

腿在那里存储 4 个时间值,然后我将它们相加并将其转换为秒,并将每个值的时间作为一个整体输出。我只是不知道如何为数组做这件事。

编辑:不太习惯编辑的工作方式,我写的一半不见了,但没关系,大部分都是胡言乱语。这是我的另一段代码,用于记录时间并对时间进行分类:

#include <stdio.h>

int main()
{
char name[31];
int leg1;
int leg2;
int leg3;
int leg4;
int totalTime;

printf("Hello, please enter the name of the person.:\n");
scanf("%30s", &name);

printf("Now please enter the time of the person for the first leg in seconds.:\n");
scanf("%d", &leg1);

printf("Now please enter the time of the person for the second leg in seconds.:\n");
scanf("%d", &leg2);

printf("Now please enter the time of the person for the third leg in seconds.:\n");
scanf("%d", &leg3);

printf("Now please enter the time of the person for the final leg in seconds.:\n");
scanf("%d", &leg4);

totalTime = leg1 + leg2 + leg3 + leg4;

int minutes = totalTime / 60;
int seconds = totalTime % 60;

if (minutes < 4)
{
printf("\t%30s qualified for the International Tournament with a time of %d minutes and %d seconds", name, minutes, seconds);
}
else if (minutes >= 4 && minutes < 12)
{
printf("\t%30s qualified for the Natonal Race Meeting with a time of %d minutes and %d seconds", name, minutes, seconds);
}
else if (minutes >= 12 && minutes < 30)
{
printf("\t%30s qualified for the Beginner's League with a time of %d minutes and %d seconds", name, minutes, seconds);
}
else if (minutes >= 30)
{
printf("\t%30s did not qualify for any league with a really shit time of %d minutes and %d seconds", name, minutes, seconds);
}

return 0;

}

最佳答案

由于您正在为一项任务执行此操作,并且尚未介绍 struct,因此您可能希望避免使用它。但这是将相关信息分组到记录中的方式:

struct Racer {
char name[31];
int leg1;
int leg2;
int leg3;
int leg4;
};

int main(int argc, char *argv) {
struct Racer racers[8];
int i;
for (i = 0; i < 8; ++i) {
scanf("%30s", &racers[i].name);
scanf("%d", &racers[i].leg1);
/* ... */
}
int totalTime = 0;
for (i = 0; i < 8; ++i) {
totalTime = totalTime + racers[i].leg1 + /* ... */
/* ... */
}
/* ... */
}

此时要避免使用结构,您可以使用并行数组。另见 "Store multiple strings in array"

int main(int argc, char *argv) {
char names[8][31];
int legs1[8];
int legs2[8];
int legs3[8];
int legs4[8];
int i;
for (i = 0; i < 8; ++i) {
scanf("%30s", &names[i]);
scanf("%d", &legs1[i]);
/* ... */
}
int totalTime = 0;
for (i = 0; i < 8; ++i) {
totalTime = totalTime + legs1[i] + /* ... */
/* ... */
}
/* ... */
}

(旁注:我会提到这两种方法在运行时并不等同,因为它们以不同的方式布置内存。在某些情况下,您可能会选择单独的数组是有原因的...如果您将单独遍历数组,最好将数据紧密地放在一起,而不是作为跨多个记录的元素拆分。)

关于c - 使用 scanf 为数组中的每个值分配时间的程序 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53241117/

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