0

对于我的任务,我将创建一个允许用户输入学生信息(ID、DOB 和电话号码)的结构。这样做很简单,我没有问题。现在我需要使用学生 ID 搜索输入信息以显示学生对应的 DOB 和电话号码,这是我无法解决的问题。如果您发现我的程序有任何其他问题,请让我知道哪里出了问题以及为什么我应该更改,以便我可以从错误中吸取教训。

谢谢你。

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

struct infoStruct 
{
    int studentID;
    int year;
    int month;
    int day;
    int phone;
    int end;
};

int main (void)
{
int students = 0;   
int infoArray [students];
struct infoStruct info;
    int studentID;
    int year;
    int month;
    int day;
    int phone;
    int end;



while (info.end != -1) {
students = students + 1;
printf("Enter student information (ID, day, month, year, phone)\n");
printf("Enter -1 following the phone number to end the process to continue enter 0\n");
scanf("%d %d %d %d %d %d", &info.studentID, &info.day, &info.month, &info.year, &info.phone, &info.end);
}
if (info.end = -1){
printf("You entered %d student(s)\n", students);
}
//Student Search
printf("Please enter the student ID of the student your looking for\n.");
scanf("%d", info.studentID);
printf(" DOB: %d %d %d, Phone: %d", info.month, info.day, info.year, info.phone);

}
4

2 回答 2

1

info.end 在 while (info.end != -1) 之前未初始化。初始化所有变量(studentID...)和结构。

if (info.end = -1) 是一个任务!

使用 : if (info.end == -1) 我更喜欢使用 if (-1 == info.end) (如果你使用 : only = 而不是 == 你会得到一个错误)。(尤达把戏^^)

而且您必须使用结构数组来保存每个学生(因为您会不断擦除以前的学生信息)。

这是你的作业,我不会为你做作业;)

于 2013-11-08T13:48:36.387 回答
0

我将把大部分编码留给你,因为这是家庭作业,但这是你需要改变才能让它工作的地方。

首先,如果你想存储多个学生信息将需要是一个数组

static int MAX_STUDENTS = 50;
struct infoStruct info[MAX_STUDENTS];

然后将每个学生扫描到结构的单独部分

scanf("%d %d %d %d %d %d", &info[students-1].studentID, &info[students-1].day, &info[students-1].month, &info[students-1].year, &info[students-1].phone, &info[students-1].end);

那么您需要确保正确检查结束条件(检查最新的 info[x].end)
在尝试添加更多之前检查数组中是否还有一些空间也是明智的。

完成这些后,您就可以正确存储学生了。

至于搜索,您需要扫描 id 以搜索到单独的 int。然后遍历数组 (info[x]) 并根据搜索 ID 搜索每个元素的 studentID。当你有匹配时,打印出来。

编辑:
也值得考虑将电话号码存储为“字符串”而不是整数,很多电话号码以“0”开头,但整数会删除 0。(所以电话号码 012345 将变为 12345)

于 2013-11-08T14:13:33.767 回答