C语言实现学生信息管理

题目要求:

1)有n个学生,每个学生信息有:学号、姓名 、年龄、入学成绩。 按上述列出的学生属性试定义结构体类型 struct student,并给该类型起别名为STUD。

2) 在主函数中定义一个能容纳5个学生的结构体数组s,并对其中前4个学生用初始化方式提供初值,初值自己拟定。

3) 编写一个函数,完成从键盘输入一个学生信息,要求用地址传递方式传回这个学生信息 

4)调用上述输入学生信息函数,完成对第5个学生信息的输入。

5)编写函数输出n个学生学生信息。格式要求每一行一个学生信息,每列之间有间隔。

6)已知有n个学生,试编写函数完成计算所有学生的平均年龄并返回这个平均值。

7)已知有n 个学生的信息,编写函数完成将所有年龄加1,要求用结构体指针完成对该数组的修改。调用输出学生信息函数查看调用上述修改年龄函数后,学生年龄的变化。

代码实现:

1.起别名,那肯定是typedef struct student{...}STUD;

2.在主函数中创建结构体数组即可,如:STUD s[5];
  在主函数中拟定前四名学生的初始值,直接在主函数中赋值即可,如:s[0].sno=001;

3.编写函数键入学生信息
  void InputStud(STUD* p)//不需要返回值
   {
       printf("提示输入内容");
       scanf("%d",&p->结构体元素类型)  ;//输入int型数据,其他类推,字符串用gets()也可
   }

4调用函数完成对第五个学生信息的输入,只要函数没错应该就没问题.另外,别忘了数组第五个元素标号是4就行。

5.因为定义s是数组名,所以直接PrintStud(s,5),将这个数组的内存地址传进去就行.

6.这个不用再说了,直接上就行。

7.将结构体数组名传给p,STUD*p就是结构体指针,p是数组名,也就是s[0]的地址,p+i就是s[i]的地址,所以要用(p+i)->age++;别忘了for循环,最后再用第5)中写的PrintStud函数打印结构体数组就行.

#include
typedef struct student
{
	char sno[4];
	char name[8];
	int age;
	float enscore;
}STUD;
void  InputStud(STUD *p){
	printf("请输入学号:");
	gets(p->sno); 
	printf("请输入姓名:");
	gets(p->name);
	printf("请输入年龄:");
	scanf("%d",&p->age);
	printf("请输入入学成绩:");
	scanf("%f",&p->enscore);
}
void PrintStud(STUD *s,int n)
{
	int i;
	 printf("学号  姓名   年龄   入学成绩\n");
	for(i=0;iage++; 
	}
}
int main()
{
	STUD s[5]={
	{"001","张三",19,80},
	{"002","李四",18,80},
	{"003","王五",17,80},
	{"004","老六",18,80},
	};
	InputStud(&s[4]);
	PrintStud(s,5);
	printf("平均年龄为:%.1f\n",AvgStud(s,5));
	printf("\n");
    AgePlusOne(s,5);
    PrintStud(s,5);
    return 0; 
}

你可能感兴趣的:(c语言,c++,数据结构,算法)