对于我的任务,我将创建一个允许用户输入学生信息(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);
}
答案 0 :(得分:1)
info.end在while(info.end!= -1)之前未初始化。初始化所有变量(studentID ...)和结构。
if(info.end = -1)是作业!
使用:if(info.end == -1)我更喜欢使用if(-1 == info.end)(如果你曾经使用过:only =而不是==你会得到一个错误)。 (尤达把戏^^)
你必须使用一个struct数组来保存每个学生(因为你不断删除以前的学生信息)。
这是你的作业,我不会为你做的工作;)
答案 1 :(得分: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);
然后你需要确保正确检查结束条件(检查最新信息[x] .end)
在尝试添加更多内容之前,检查阵列中是否还有一些空间也是明智的。
完成这些操作后,您正确地存储学生。
至于搜索,你需要扫描id来搜索一个单独的int。 然后遍历数组(info [x])并根据搜索ID搜索每个元素的studentID。如果匹配,请将其打印出来。
修改强>
它也值得考虑将电话号码存储为“字符串”而不是int,很多电话号码以“0”开头,但是int会删除0。
(所以电话号码012345,将成为,12345)