#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_SIZE 60
typedef struct Student {
int number;
char name[MAX_SIZE];
char sex[MAX_SIZE];
//出生年月日
int birth_Year;
int birth_Month;
char education[MAX_SIZE];
char address[MAX_SIZE];
struct Student* next;
}LinkList;
int number;
char name[MAX_SIZE];
char sex[MAX_SIZE];
//出生年月日
int birth_Year;
int birth_Month;
char education[MAX_SIZE];
char address[MAX_SIZE];
void Add(LinkList *L);
void Find(LinkList *L);
int main(void) {
int flag = 1;
while (flag) {
int number;
LinkList L;
printf("*****欢迎使用学生管理系统*****\n");
printf("*****1.添加学生信息*****\n");
printf("*****2.查询学生信息*****\n");
printf("*****3.修改学生信息*****\n");
printf("*****4.对学生信息按编号排序*****\n");
printf("*****6.关闭系统*****\n");
printf("请输入所需操作:");
scanf("%d", &number);
switch (number) {
case 1:
printf("*****添加学生信息*****\n");
Add(&L);
break;
case 2:
printf("*****查询学生信息*****\n");
Find(&L);
break;
case 3:
printf("*****修改学生信息*****\n");
break;
case 4:
printf("*****删除学生信息*****\n");
break;
case 5:
printf("*****对学生信息按编号排序*****");
break;
case 6:
printf("*****关闭系统*****");
flag = 0;
break;
}
}
return 0;
}
void Add(LinkList *L) {
L = (LinkList*)malloc(sizeof(LinkList));
L->next = NULL;
LinkList* p = NULL;
p = L;
LinkList* data;
int flag = 1;
printf("请输入所需录入学生的人数:");
scanf("%d",&flag);
for (int i = 0; i < flag; i++) {
data = (LinkList*)malloc(sizeof(LinkList));
printf("请输入学生编号:");
scanf("%d", &number);
p->number = number;
printf("请输入学生姓名:");
scanf("%s", &name);
strcpy(p->name, name);
printf("请输入学生性别:");
scanf("%s", &sex);
strcpy(p->sex, sex);
printf("请输入学生出生年份:");
scanf("%d", &birth_Year);
p->birth_Year = birth_Year;
printf("请输入学生出生月份:");
scanf("%d", &birth_Month);
p->birth_Month = birth_Month;
printf("请输入学生学历:");
scanf("%s", &education);
strcpy(p->education, education);
printf("请输入学生住址:");
scanf("%s", &address);
strcpy(p->address, address);
p->next = data;
p = data;
}
p->next = NULL;
printf("添加成功");
printf("\n");
}
void Find(LinkList *L) {
LinkList* p;
p = L->next;
while (p != NULL) {
printf("学生姓名:%s\n",p->name);
printf("学生性别:%s\n", p->sex);
printf("学生年,月:%d %d\n", p->birth_Year, p->birth_Month);
printf("学生学历:%s\n", p->education);
printf("学生住址:%s\n", p->address);
printf("\n");
p = p->next;
}
}
#include <iostream>
#pragma warning(disable:4996)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_SIZE 20
#define true 1
#define false 0
typedef struct student {
int number;
char name[MAX_SIZE];
char sex[MAX_SIZE];
//出生年月日
int birth_Year;
int birth_Month;
char education[MAX_SIZE];
int phone;
char address[MAX_SIZE];
}Student;
typedef struct Link {
Student message;
struct Link* next;
}LinkList;
LinkList* Add(LinkList* L);
int Find(LinkList* L);
int main(void) {
int flag = 1;
while (flag) {
int number;
LinkList* L = NULL;
printf("*****欢迎使用学生管理系统*****\n");
printf("*****1.添加学生信息*****\n");
printf("*****2.查询学生信息*****\n");
printf("*****3.修改学生信息*****\n");
printf("*****4.对学生信息按编号排序*****\n");
printf("*****6.关闭系统*****\n");
printf("请输入所需操作:");
scanf_s("%d", &number);
switch (number) {
case 1:
printf("*****添加学生信息*****\n");
L = Add(L);
break;
case 2:
printf("*****查询学生信息*****\n");
Find(L);
break;
case 3:
printf("*****修改学生信息*****\n");
break;
case 4:
printf("*****删除学生信息*****\n");
break;
case 5:
printf("*****对学生信息按编号排序*****");
break;
case 6:
printf("*****关闭系统*****");
flag = 0;
break;
}
}
return 0;
}
//添加学生信息
LinkList* Add(LinkList* L) {
LinkList* p;
int flag = 1;
L = (LinkList*)malloc(sizeof(LinkList));
p = L;
LinkList* data;
while (flag) {
data = (LinkList*)malloc(sizeof(LinkList));
printf("请输入学生编号:");
if (p != NULL) {
scanf_s("%d", &p->message.number);
printf("请输入学生姓名:");
int b = getchar();
gets_s(p->message.name);
printf("请输入学生性别:");
b = scanf("%s", &p->message.sex);
printf("请输入学生出生年份:");
b = scanf("%d", &p->message.birth_Year);
printf("请输入学生出生月份:");
b = scanf("%d", &p->message.birth_Month);
printf("请输入学生学历:");
b = scanf("%s", &p->message.education);
printf("请输入学生电话:");
b = scanf("%d", &p->message.phone);
printf("请输入学生住址:");
b = scanf("%s", p->message.address);
if (data != NULL) {
data -> next = p -> next;
p->next = data;
}
}
printf("请输入是否继续:");
scanf_s("%d", &flag);
}
return L;
}
//查询学生成绩
int Find(LinkList* L) {
int i;
LinkList* p;
p = L;
printf("请输入所查找的编号:");
scanf_s("%d", &i);
while (p->next != NULL && i != p->message.number) {
p = p->next;
}
if (i == p->message.number) {
printf("学生姓名:%s\n", p->message.name);
printf("学生性别:%s\n", p->message.sex);
printf("学生年,月:%d %d\n", p->message.birth_Year, p->message.birth_Month);
printf("学生学历:%s\n", p->message.education);
printf("学生电话:%d\n", p->message.phone);
printf("学生住址:%s\n", p->message.address);
printf("\n");
}
else {
printf("未找到该学号\n");
}
return 1;
}
#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX_SIZE 60 #define true 1 #define false 0 typedef struct student { int number; char name[MAX_SIZE]; char sex[MAX_SIZE]; //出生年月日 int birth_Year; int birth_Month; char education[MAX_SIZE]; int phone; char address[MAX_SIZE]; }Student; typedef struct Link{ Student message; struct Link* next; }LinkList; LinkList* Add(LinkList* L); int Find(LinkList* L); int main(void) { int flag = 1; while (flag) { int number; LinkList L; printf("*****欢迎使用学生管理系统*****\n"); printf("*****1.添加学生信息*****\n"); printf("*****2.查询学生信息*****\n"); printf("*****3.修改学生信息*****\n"); printf("*****4.对学生信息按编号排序*****\n"); printf("*****6.关闭系统*****\n"); printf("请输入所需操作:"); scanf("%d", &number); switch (number) { case 1: printf("*****添加学生信息*****\n"); Add(&L); break; case 2: printf("*****查询学生信息*****\n"); Find(&L); break; case 3: printf("*****修改学生信息*****\n"); break; case 4: printf("*****删除学生信息*****\n"); break; case 5: printf("*****对学生信息按编号排序*****"); break; case 6: printf("*****关闭系统*****"); flag = 0; break; } } return 0; } //添加学生信息 LinkList* Add(LinkList* L) { LinkList* p; int flag = 1; L = (LinkList*)malloc(sizeof(LinkList)); p = L; LinkList* data; while (flag) { data = (LinkList*)malloc(sizeof(LinkList)); printf("请输入学生编号:"); scanf("%d", &p->message.number); printf("请输入学生姓名:"); getchar(); gets_s(p->message.name); printf("请输入学生性别:"); scanf("%s", &p->message.sex); printf("请输入学生出生年份:"); scanf("%d", &p->message.birth_Year); printf("请输入学生出生月份:"); scanf("%d", &p->message.birth_Month); printf("请输入学生学历:"); scanf("%s", &p->message.education); printf("请输入学生电话:"); scanf("%d", &p->message.phone); printf("请输入学生住址:"); scanf("%s", p->message.address); p->next = data; p = data; printf("请输入是否继续:"); scanf("%d", &flag); } p->next = NULL; return L; } //查询学生成绩 int Find(LinkList* L) { int i; LinkList* p; p = L; printf("请输入所查找的编号:"); scanf("%d", &i); while (p->next!=NULL&&i!=p->message.number) { p = p->next; } if (i==p->message.number) { printf("学生姓名:%s\n", p->message.name); printf("学生性别:%s\n", p->message.sex); printf("学生年,月:%d %d\n", p->message.birth_Year, p->message.birth_Month); printf("学生学历:%s\n", p->message.education); printf("学生电话:%d\n", p->message.phone); printf("学生住址:%s\n", p->message.address); printf("\n"); } else { printf("未找到该学号\n"); } return 1; }
我稍微改了下,他现在报错成p是0xccccccc
我调试了一下,发现,我的数据输入后,汉字变成了一堆屯屯屯,数字都变成一堆-83133之类的,我猜可能是不是我while语句判断,数据有误导致的
@新手小白。: 我也是个新手,学的C# ,你之前报错的,可以参考一上这个:
取消VS中“取消对NULL指针的‘、、、’的引用”的警告的方法
@中华鲟3670: 好的谢谢了
@新手小白。:
用我改的代码跑了好像没有报错:
@中华鲟3670: 主要就是查询的时候,就会报错