qq_58439878 2021-06-17 09:22 采纳率: 50%
浏览 8
已结题

希望用C语言做,谢谢

 

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-06-17 09:41
    关注

    代码如下,如有帮助,请采纳一下,谢谢。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct Student
    {
    	int id;        //学号
    	char name[20]; //姓名
    	int score;     //成绩
    };
    //录入信息
    void InputInfo(struct Student arr[],int n)
    {
    	int i,j;
    	for (i = 0;i < n; i++)
    	{
    		printf("请输入第%d名学生的信息(学号、姓名、课程成绩):",i+1);
    		scanf("%d %s %d",&arr[i].id,arr[i].name,&arr[i].score);
    	}
    }
    
    
    //排序
    void SortByTotal(struct Student arr[],int n)
    {
    	int i,j;
    	struct Student tmp;
    	for (i = 0; i < n-1;i++)
    	{
    		for (j = 0;j < n-1-j;j++)
    		{
    			if(arr[j].score < arr[j+1].score)
    			{
    				tmp = arr[j];
    				arr[j] = arr[j+1];
    				arr[j+1] = tmp;
    			}
    		}
    	}
    	//显示
    	for (i = 0;i< n;i++)
    	{
    		printf("%d\t%s\t%d\n",arr[i].id,arr[i].name,arr[i].score);
    	}
    }
    
    //查询
    void Find(struct Student arr[],int n)
    {
    	int i,j;
    	int id;
    
    	printf("请输入学号:");
    	scanf("%d",id);
    
    	for (i = 0;i < n;i++)
    	{
    		if( arr[i].id == id )
    		{
    			printf("%d\t%s\t%d\t%d\n",arr[i].id,arr[i].name,arr[i].score,i+1);
    			break;;
    		}
    	}
    }
    //统计占比
    void Tongji(struct Student arr[],int n)
    {
    	int i,j;
    	int you = 0;
    	int liang = 0;
    	int zhong = 0;
    	int jige = 0;
    	int bujig = 0;
    	for (i = 0; i< n;i++)
    	{
    		if (arr[i].score >= 90)
    		{
    			you++;
    		}else if (arr[i].score >= 80 && arr[i].score <= 89)
    		{
    			liang++;
    		}else if (arr[i].score >= 70 && arr[i].score <= 79)
    		{
    			zhong++;
    		}else if (arr[i].score >= 60 && arr[i].score <= 69)
    		{
    			jige++;
    		}else
    			bujig++;
    	}
    	//显示
    	printf("优秀人数%d,占比%f\n",you,1.0*you/n);
    	printf("良好人数%d,占比%f\n",liang,1.0*liang/n);
    	printf("中等人数%d,占比%f\n",zhong,1.0*zhong/n);
    	printf("及格人数%d,占比%f\n",jige,1.0*jige/n);
    	printf("不及格人数%d,占比%f\n",bujig,1.0*bujig/n);
    
    }
    
    int main()
    {
    	struct Student stu[30];
    	int n;
    	int opt;
    	int bgo = 1;
    	
    	while(bgo)
    	{
    		printf("-------学生管理系统-------\n");
    		printf("  1.录入学生信息          \n");
    		printf("  2.按成绩排名            \n");
    		printf("  3.查询学生信息          \n");
    		printf("  4.统计各段成绩占比      \n");
    		printf("  9.退出系统              \n");
    		printf("--------------------------\n");
    		scanf("%d",&opt);
    		switch(opt)
    		{
    		case 1:
    			printf("请输入学生人数:");
    			scanf("%d",&n);
    			InputInfo(stu,n);
    			getchar();
    			getchar();
    			system("cls");
    			break;
    		case 2:
    			SortByTotal(stu,n);
    			getchar();
    			getchar();
    			system("cls");
    			break;
    		case 3:
    			Find(stu,n);
    			getchar();
    			getchar();
    			system("cls");
    			break;
    		case 4:
    			Tongji(stu,n);
    			getchar();
    			getchar();
    			system("cls");
    			break;
    		case 9:
    			bgo = 0;
    			break;
    		}
    	}
    	return 0;
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月27日
  • 已采纳回答 9月19日

悬赏问题

  • ¥15 链接问题 C++LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接