C语言学习_结构体
题目要求:学生的记录由学号、姓名、专业组成,根据班级人数,将学生记录存放在结构体数组中,由于部分同学转专业,学生记录发生了变化,请编程实现根据学号查询查询学生并修改专业,分别输出转专业和未转专业的学生记录。要求:班级人数、学生记录均由键盘输入
#include<stdio.h>
#define M 100
//要求:1.结构体内部成员为学号、姓名、专业:(完成)
// 2.可以输入学生总人数和学生信息(完成)
// 3.输出学生总人数,以及学生的个人信息(完成)
// 4.班级人数、学生记录均由键盘输入(完成)
// 5.通过学号查询并修改该学生的专业(完成)
// 6.分别输出转专业和未转专业的学生记录(完成)
struct Student
{
int Num; //学生学号
int flag; //用来判断是否转专业,不需要显示出来 ,0表示未转专业,1表示转过专业
char Name[20]; //学生姓名
char Pro[20]; //学生专业
};
int main()
{
int Scanf(struct Student stu[]);
int Output(struct Student stu[], int m);
int Change(struct Student stu[], int m);
int Printf(struct Student stu[], int m);
struct Student stu[M],*p=stu;
int m; //用于记录输入的学生总人数
int a = 3; //用于选择方式
m=Scanf§;
Output(p, m);
while (a!=0)
{
printf("\n若要修改学生专业请输入1,若要输出转专业和未转专业的学生记录请输入2,若要结束程序请输入0:");
scanf("%d", &a);
if (a == 1)
{
Change(p, m);
}
else if (a == 2)
{
Printf(p, m);
}
}
system(“pause”);
return 0;
}
//输入学生总人数和学生信息
int Scanf(struct Student stu[])
{
int i, m;
printf("\n请输入学生总人数,不得超过100人:");
scanf("%d", &m);
printf(“请输入学生个人信息:学号,姓名,专业:\n”);
for (i = 0; i < m; i++)
{
scanf("%d", &stu[i].Num);
scanf("%s", stu[i].Name);
scanf("%s", stu[i].Pro);
stu[i].flag = 0;
}
return m;
}
//输出学生的总人数以及学生的个人信息
int Output(struct Student stu[],int m)
{
int i;
for (i = 0; i < m; i++)
{
printf(“学号:%d,”,stu[i].Num);
printf(“姓名:%s,”,stu[i].Name);
printf(“专业:%s”,stu[i].Pro);
printf("\n");
}
return 0;
}
//通过学号修改学生专业
int Change(struct Student stu[], int m)
{
int i;
int j=0; //用于判断输入的学号是否存在
int m_num; //用于存放要修改的学生学号
printf("\n请输入要修改的学生学号:");
scanf("%d", &m_num);
for (i = 0; i < m; i++)
{
if (m_num == stu[i].Num)
{
printf("\n该学号的学生已找到:");
printf("\n请输入新的专业:");
printf("\n新专业为:");
scanf("%s", stu[i].Pro);
stu[i].flag = 1;
printf("\n修改成功,学生信息更新为:");
printf("%学号:%d,", stu[i].Num);
printf(“姓名:%s,”, stu[i].Name);
printf(“专业:%s”, stu[i].Pro);
j = 1;
break;
}
}
if (j != 1)
{
printf("\n输入学号有误,请重新输入:");
}
return 0;
}
//分别输出转专业和未转专业的学生个人记录
int Printf(struct Student stu[], int m)
{
int i;
int j=0,k=0; //让多余的话只输出一次
//转专业的学生个人信息输出
for (i = 0; i < m; i++)
{
if (stu[i].flag == 1)
{
if (j == 0)
{
printf("\n转专业的学生个人信息为:\n");
j = 1;
}
printf("%学号:%d,", stu[i].Num);
printf(“姓名:%s,”, stu[i].Name);
printf(“专业:%s”, stu[i].Pro);
printf("\n");
}
}
if (j == 0)
{
printf("\n没有学生转过专业\n");
}
//未转专业个人信息输出
for (i = 0; i < m; i++)
{
if (stu[i].flag == 0)
{
if (k == 0)
{
printf("\n未转专业的学生个人信息为:\n");
k = 1;
}
printf("%学号:%d,", stu[i].Num);
printf(“姓名:%s,”, stu[i].Name);
printf(“专业:%s”, stu[i].Pro);
printf("\n");
}
}
return 0;
}
//实验结果:
- ios开发-c语言之结构体的学习
- IOS学习---C语言基础学习7(变量类型与结构体)
- C语言学习内容总结2017/11/21(结构体)
- 黑马程序员_C语言学习笔记之结构体和枚举
- C语言的大BOSS:结构体+单链表的学习体会
- 【学习ios之路:C语言】结构体应用
- C语言结构体学习系列之(二)
- C语言结构体的学习
- 学习C语言结构体
- C语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数
- iOS开发学习笔记 2-8 C语言部分 联合 枚举 结构体
- c语言学习零碎整理(2):结构体对齐问题
- C语言学习笔记9--结构体
- C语言-结构体学习
- 黑马程序员——ios学习笔记 C语言 结构体&链表&枚举
- 结构体__C语言学习内容总结2017/11/25
- C语言学习------3.1 结构体和共用体
- 结构体与共用体02 - 零基础入门学习C语言54
- C语言提高班学习笔记 lesson2 结构体
- C语言学习笔记10-结构体、枚举、联合体