结束此逻辑循环后,如何打印多行

时间:2017-11-11 22:43:45

标签: c

我再次。 C菜鸟。我正在编写一个程序来编写一个程序,提示用户输入信息,之后程序应该列出已输入的数据。我的代码只打印输入的最后一条记录信息。

例如,我为员工#1“Rookie Coder”输入以下信息作为第一个员工姓名,并分别输入25和40表示小时工资和工作小时数。然后,我为员工#2“慢学习者”输入以下信息作为第二个员工姓名,并分别输入20和45作为小时工资和工作小时数。该程序仅var variable name = answer与“慢学习者”相关的信息。但我想打印输入的两个记录的信息。

有人可以提供我缺少的指导,以便打印两张唱片吗?谢谢C Rookie

prints

3 个答案:

答案 0 :(得分:1)

您只有一组变量可用于循环的每次迭代。第一次通过循环存储的任何内容都会在第二次循环时被覆盖。因此,您只能存储最近输入的一组值。

您希望声明将数据作为数组的每个变量,这样您就可以保存多个值。

char deptname [5][21];
char firstname [5][10];
char lastname [5][10];
char fullname [5][21];
float hrsworked[5];
float hrwage[5];

...

do {

      printf("Enter employee #%d: ", count+1);
      scanf("%s %s", &firstname[count], &lastname[count]);
      strcpy(fullname[count], firstname[count]);
      strcat(fullname[count], " ");
      strcat(fullname[count], lastname[count]);
      printf("Enter the hourly wage of %s: ", fullname[count]);
      scanf("%f", &hrwage[count]);
      printf("Enter total number of hours: ");
      scanf("%f", &hrsworked[count]);

      printf("\nThank you. Process another employee? ");
      scanf ("%s", &again);
      printf("\n");

      count++; // Increment the counting variable

} while (again != 'N' && again != 'n');

然后你需要遍历数组来打印每个元素:

int i;
for (i=0; i<count; i++) {
    printf("%s, $%0.2f, %0.2f: \n", fullname[i], hrwage[i], hrsworked[i]);
}

答案 1 :(得分:0)

:)从你身边天真但不要担心。您只将最后数据存储到fullname, hrwage, hrsworked中,因此只保存最后一个输出。您需要更好的数据结构来存储用户插入的数据。

1)如果您知道将有多少输入,您可以使用预定义的字符串数组作为名称的字符串,并使用浮点数表示小时和工资。

2)如果您不知道,那么您将需要一个缩放数据结构,例如列表,以便为其添加/添加/追加元素;)

C阵列检查this C中的列表检查this

然后最后但并非最不重要的是,在用输入填充它们之后,您需要使用for / while循环进行循环以打印数组或列表。

希望这会有所帮助!

答案 2 :(得分:0)

从下面的语句中删除&符号,因为deptname本身就是字符串

scanf("%s", &deptname);

从以下陈述中也做同样的事情

  scanf("%s %s", &firstname, &lastname);

你想要打印所有记录,但最后只有一个printf,所以显然它只打印最后一个员工记录

printf("%s, $%0.2f, %0.2f: \n", fullname, hrwage, hrsworked);

如果您想在给出N&#39;之后打印所有员工数据?选项,您应该在此之前存储信息,我的建议是将所有条目置于结构中,然后使用结构数组并每次存储。