您的位置:首页 > 编程语言 > C语言/C++

C语言学习_结构体

2019-03-24 20:47 204 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_39254381/article/details/88781743

题目要求:学生的记录由学号、姓名、专业组成,根据班级人数,将学生记录存放在结构体数组中,由于部分同学转专业,学生记录发生了变化,请编程实现根据学号查询查询学生并修改专业,分别输出转专业和未转专业的学生记录。要求:班级人数、学生记录均由键盘输入
#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;
}
//实验结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: