C语言:学生成绩管理,一维数组,二维字符串数组

1、建立三个文件 ,mymain.c  list.c    list .h
2 、mymain.c只有一个主函数,调用list.c文件内的功能函数。
3、主函数定义一维数组,存储学生成绩,二维数组存储学生姓名。
4、功能1:一维数组和二维数组作为参数传递给子函数1,并在子函数1中赋值
5、功能2:子函数2求出最高成绩学生对应的姓名
6、功能3:子函数3求出学生平均成绩
7、功能4:子函数4对学生成绩排序。
8、功能5:子函数5对给定关键字key的学生成绩进行查找,查找成功输出该学生姓名。

 main.c

#include "list.h"


int main(int argc, const char *argv[])
{
	int arr[10];
	char brr[5][10];

	input_s(arr,brr,3);
	output_s(arr,brr,3);
	max_s(arr,brr,3);
	avg_s(arr,brr,3);
	sort_s(arr,brr,3);
	output_s(arr,brr,3);
	find_s(arr,brr,3);

	return 0;
}

list.c

#include <myhead.h>
int input_s(int score[],char (*name)[10],int count)
{
	int i;
	for(i=0;i<count;i++)
	{
		printf("输入第%d位学生姓名:",i+1);
		scanf("%s",name[i]);
	}

	printf("输入学生的成绩:\n");
	for(i=0;i<count;i++)
	{
		printf("输入%s的成绩:",*(name+i));
		scanf("%d",&score[i]);
	}

}

int output_s(int score[],char (*name)[10],int count)
{
	int i;
	for(i=0;i<count;i++)
	{
		printf("姓名:%s\t成绩:%d\n",name[i],score[i]);
	}
}
int max_s(int score[],char (*name)[10],int count)
{
	int i=0;
	int a;
	int max=score[0];
	for(i=0;i<count;i++)
	{
		if(max<score[i])
		{
			max=score[i];
			a=i;
		}
	}
	printf("\n最高成绩:%d 同学:%s\n",max,name[a]);
}

int avg_s(int score[],char (*name)[10],int count)
{
	int i;
	float sum=0;
	float avg;

	for(i=0;i<count;i++)
	{
		sum+=score[i];
	}
	printf("平均成绩:%.2f\n ",sum/count);
}

int sort_s(int score[],char (*name)[10],int count)
{
	int i,j;
	int temp;
	char tem[10];
	for(i=1;i<count;i++)
	{
		for(j=0;j<count-1;j++)
		{
			if(score[j]<score[j+1])
			{
			temp=score[j];
			strcpy(tem,name[j]);
			score[j]=score[j+1];
			strcpy(name[j],name[j+1]);
			score[j+1]=temp;
			strcpy(name[j+1],tem);
			}
		}
	}
}

int find_s(int score[],char (*name)[10],int count)
{
	int key;
	int i;


	printf("请输入要查找的成绩:");
	scanf("%d",&key);

	for(i=0;i<count;i++)
	{
		if(score[i]==key)
		{
			printf("查找成功\n");
			printf("该学生为%s\n",name[i]);
			return;
		}
	}
	printf("查找失败\n");
}

list.h

#ifndef __LIST__H__
#define __LIST__H__
int input_s(int score[],char (*name)[10],int count);
int output_s(int score[],char (*name)[10],int count);

int max_s(int score[],char (*name)[10],int count);
int avg_s(int score[],char (*name)[10],int count);
int sort_s(int score[],char (*name)[10],int count);

int find_s(int score[],char (*name)[10],int count);
#endif

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值