今日学习任务 | 学习结构体以及利用结构体数组编写学生管理程序 |
---|---|
今日任务完成情况 |
今日任务已完成。 |
今日开发中出现的问题汇总 |
无 |
今日未解决问题 |
无 |
今日开发收获 |
对内存空间中不同数据类型的分配有了清醒的认识,通过编写学生管理程序,对结构体数组有了清醒的认识。知道了共用体的存取规则,以及对大小端概念的理解。 |
自我评价 |
通过这一段时间对c的重新学习,对之前模糊的概念以及不清楚的语法规则有了进一步的认识和提高,为之后的学习奠定了基础。 |
学生管理程序
#include <stdio.h>
#include "student.h"
void menu()
{
printf("************************.\n");
printf("1.输入信息 2.显示信息\n");
printf("3.删除信息 4.修改信息\n");
printf("************************.\n");
}
void add(stu s[])//添加信息
{
printf("请输入姓名,年龄,性别,学号\n");
scanf("%s%d %c%d",&s[i].name,&s[i].age,&s[i].sex,&s[i].number);
s[i].id=i+1;
i++;
}
void show(stu s[])//显示信息
{
int j;
for(j=0; j<i; j++)
{
printf("学生%d信息:\n",s[j].id);
printf("姓名%s,年龄%d,性别%c,学号%d:\n",s[j].name,s[j].age,s[j].sex,s[j].number);
}
}
void delete(stu s[])//实现覆盖1.结构体可以整体覆盖(赋值)吗
{
int id,j;
printf("请输入要删除哪个学生的信息:\n");
scanf("%d",&id);//
for(j=0;j<i-id;j++)
{
s[id+j-1] = s[id+j];
s[id+j-1].id = id+j;
}
i--;
}
void change(stu s[])
{
int id;
printf("请输入你要更改的对象编号\n");
scanf("%d",&id);
printf("请输入要更改的姓名,年龄,性别,学号\n");
scanf("%s%d %c%d",&s[id-1].name,&s[id-1].age,&s[id-1].sex,&s[id-1].number);
}
void main()
{
int choice;
stu s[SIZE];
while(1)
{
menu();
scanf("%d",&choice);
switch(choice)
{
case 1:
add(s);
// printf("%s,%d,%c,%d\n",s[0].name,s[0].age,s[0].sex,s[0].number);
break;
case 2:
show(s);
break;
case 3:
delete(s);
break;
case 4:
change(s);
break;
default:
break;
}
}
}
头文件
#define SIZE 10
typedef struct
{
int id;
char name[20];
int age;
char sex;
int number;
}stu;
int i;//数组下标