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<stdio.h>
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;i<n;i++)
	{
		printf("%4s%6s%5d%8.0f\n",s[i].sno,s[i].name,s[i].age,s[i].enscore);
	}
}
int AvgStud(STUD *s,int n)
{
	float aveage=0;
    int i;
    for(i=0;i<n;i++)
        aveage+=s[i].age;
    aveage/=n;
    return aveage;
}
void AgePlusOne(STUD *p,int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		(p+i)->age++; 
	}
}
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; 
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值