C语言基础-结构体(一)综合:学生成绩管理系统( 姓名、成绩、最高分、最低分、平均分)(结构体、函数、指针)

先讲一下要求

项目要求:使用结构体实现一个学生成绩管理系统。

1、可输入学生的姓名与成绩,学生数量可设定。

2、打印出各个学生的成绩。

3、取的最好成绩学生的姓名。

4、取的最差成绩学生的姓名。

5、最后得出所有学生的平均成绩

使用的知识点:结构体指针、结构体数组、函数

开始
输入班级人数n
依次输入n个学生的姓名
依次输入n个学生的成绩
打印各个学生的成绩
打印成绩最好,最差学生,班级平均分
结束

需要封装的一些函数:

1、初始化函数;

2、找最大值函数;

3、找最小值函数;

4、计算平均值函数;

5、主函数;

结构体定义

struct student
{
    
    
	char *name;//姓名
    int score;//分数
};

初始化函数

struct student *initclass(int n)
{
    
    
	int i=0;
	struct student *b=(struct student*)malloc(n*sizeof(struct student));//为存储结构体b的地址开辟内存空间,方便后序函数执行遍历操作
    for(i=0;i<n;i++){
    
    
    	printf("请输入第%d个学生姓名:",i+1);
        b->name = (char*)malloc(sizeof(char));//为结构体b中的name开辟关键字
		scanf("%s",b->name);
		printf("请输入第%d个学生成绩:",i+1);
        b->score = (int*)malloc(sizeof(int));//为结构体b中的score开辟关键字
		scanf("%d",&b->score);
        b++;//指针执行自增操作
    }
    return b;
}

找最大值函数;

struct student *findmax(int n,struct student *b)
{
    
    
	b = b - n;//使指针移回首部,方便遍历
	int i=0;
    struct student *max = b;
	for(i=0;i<n;i++){
    
    
		if(b->score > max->score){
    
    
			max = b;
        }
        b++;
    }
    return max;
}

找最小值函数;

struct student *findmin(int n,struct student *b)
{
    
    
	b = b - n;//使指针移回首部,方便遍历
	int i = 0;
    struct student *min = b; 
	for(i=0;i<n;i++){
    
    
        if(b->score < min->score){
    
    
			min = b;  
        }
        b++;
    }
    return min;
}

计算平均值函数;

float avarage(int n,struct student *b)
{
    
    
	float average = 0;
	b = b - n;//使指针移回首部,方便遍历
	int i=0;
	for(i=0;i<n;i++){
    
    
		average = average + b->score;
     b++;    
    }
   
    return average/n;
}

主函数;

int main()
{
    
    	
    int n = 0;
    int i = 0;
    float average = 0;
    printf("请输入班级学生数:");
    scanf("%d",&n);
    struct student *max;
    struct student *min; 
    struct student *b=initclass(n);
	max=findmax(n,b);
    printf("成绩最好的学生名叫%s成绩为:%d\n",max->name,max->score);
    min=findmin(n,b);
    printf("成绩最差的学生名叫%s成绩为:%d\n",min->name,min->score);  
    printf("所有学生的平均成绩为:%f\n", avarage(n,b));
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44933419/article/details/112305400
今日推荐