栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言结构体题】定义用于存储学生信息的结构体数组,输入学生的准考证号、姓名和成绩信息,计算总分,并按总分由高到低输出。

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言结构体题】定义用于存储学生信息的结构体数组,输入学生的准考证号、姓名和成绩信息,计算总分,并按总分由高到低输出。

在此基础上,增加下列功能函数
1、学生信息查询功能,根据学生的准考证号查询学生成绩信息
2、学生信息插入功能,在结构体数组的指定位置插入学生信息
3、学生信息删除功能,根据准考证号来删除满足条件的学生的信息
4、学生信息修改功能,根据准考证号来修改指定学生的成绩信息
【代码】

#include 
#define N 10000
struct student
{
	char id[10];
	char name[9];
	float score[4];
	float total;
};
typedef struct student stuStru;
int input(stuStru s[])
{
	int n = -1,i;
	printf("请按下列格式输入学生信息(行首输入q结束输入):n");
	printf("------------------------------------------------------------------------------n");
	printf("准考证号t姓名t语文t数学t英语t综合n");
	do
	{
		n++;
		scanf_s("%s", s[n].id);
		if (s[n].id[0] == 'q') break;
		scanf_s("%s", s[n].name);
		for (i = 0; i < 4; i++)
			scanf_s("%f", &s[n].score[i]);
	} while (1);
	return n;
}
void sum(stuStru *s, int n)
{
	int i, j;
	stuStru* p = s;
	while (p < s + n)
	{
		p->total = 0;
		for (j = 0; j < 4; j++)
			p->total += p->score[j];
		p++;
	}
}
void selectSort(stuStru s[], int n)
{
	int i, j, k, maxindex;
	stuStru temp;
	for (i = 0; i < n - 1; i++)
	{
		maxindex = i;
		for (j = i + 1; j < n; j++)
			if (s[j].total > s[maxindex].total)
				maxindex = j;
		if (i != maxindex)
		{
			temp = s[i];
			s[i] = s[maxindex];
				s[maxindex] = temp;
		}
	}
}
void print(stuStru* s, int n)
{
	int i, j;
	if (n > 0)
	{
		printf("%-12s%-12s", "准考证号", "姓名");
		printf("%-8s%-8s%-8s%-8s%-8sn", "语文", "数学", "英语", "综合", "总分");
		printf("------------------------------------------------------------------------------------------n");
			for (i = 0; i < n; i++, s++)
			{
				printf("%-12s", s->id);
				printf("%-12s", s->name);
				for (j = 0; j < 4; j++)
					printf("%-8.2f", s->score[j]);
				printf("%-8.2fn", s->total);
		}
	}
}
void search(stuStru s[],int n,char id[])
{
    int i,j;
    for (i=0;i
            printf("%-12s%-12s", "准考证号", "姓名");
            printf("%-8s%-8s%-8s%-8s%-8sn", "语文", "数学", "英语", "综合", "总分");
            printf("------------------------------------------------------------------------------------------n");
            printf("%-12s", s[i].id);
            printf("%-12s", s[i].name);
            for (j = 0; j < 4; j++)
                printf("%-8.2f", s[i].score[j]);
            printf("%-8.2fn", s[i].total);
        }

}
int insert(stuStru s[],int n,int pos,stuStru x)
{
    int i;
    if (pos>=0&&pos<=n-1)
    {
        for (i=n-1;i>=pos;i--)
            s[i+1]=s[i];
        s[pos]=x;
        n++;
    }
    return n;
}
int dele(stuStru s[],int n,char id[])
{
    int i,j,pos;
    for (i=0;i
        if (strcmp(s[i].id,id)==0)
        {
            pos=i;
            for (j=pos+1;j
    int i,j;
    for (i=0;i
        if (strcmp(s[i].id,id)==0)
        {
            printf("%-12s%-12s", "准考证号", "姓名");
            printf("%-8s%-8s%-8s%-8s%-8sn", "语文", "数学", "英语", "综合", "总分");
            printf("------------------------------------------------------------------------------------------n");
            scanf_s("%s", s[i].id);
            scanf_s("%s", s[i].name);
            for (j= 0; j < 4; j++)
                scanf_s("%f", &s[i].score[j]);
        }
    }
}
int main()
{
	stuStru s[N];
	int n,pos;
	char id[10];
	stuStru zhan={"110100106","占梦钦",{94,134,126,197}};
	n = input(s);
    printf("请输入您想要插入的位置下标:n");
	scanf("%d",&pos);
    n=insert(s,n,pos,zhan);
    print(s,n);
	sum(s, n);
	selectSort(s, n);
	print(s, n);
	printf("请输入您要查询的学生的准考证号:n");
	scanf("%s",id);
    search(s,n,id);
    printf("请输入您要删除的学生的准考证号:n");
    scanf("%s",id);
    n=dele(s,n,id);
    print(s,n);
    printf("请输入您要修改信息的学生的准考证号:n");
    scanf("%s",id);
    modify(s,n,id);
    sum(s, n);
	selectSort(s, n);
    print(s,n);
    printf("结束使用!n");
	return 0;
}

【解释】
结构体数组的插入、删除、查找方式和普通数组算法类似,注意参数传递。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021652.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号