ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

录入学生的所有数据(学号,姓名,三门课程成绩),选择性输出 包括(所有学生平均分,根据学号查询学生数据,查看排名)三个选项

2020-12-06 15:32:47  阅读:183  来源: 互联网

标签:num name int double 学生 score printf 录入 平均分


#include<stdio.h>
#include<string.h> 
#define N 5

void input(int num[],char name[][20],double score[][4]); 
void average(double score[][4]);
void search(int n,int num[],char name[][20],double score[][4]);
void sort(int num[],char name[][20],double score[][4]);

int main()
{
     int n;///存放需要查找的数 
     int num[N];//存放N个学生的学号信息 
     char name[N][20];//存放N个学生的姓名信息 
     double score[N][4];//存放N个学生的三门课成绩和平均分 

     char choice;
     printf("Input each students's information\n");
     input(num,name,score);
     
     /*显示主菜单*/ 
     while(1)
     {
     	printf("===============the Score Processing System============================\n");
     	printf("1,print each student's average\n");
     	printf("2,order the students by student's average decreasingly\n");
     	printf("3,search the student \n");
     	printf("======================================================================\n");
     	printf("Please choose (1~3):\n");
     	choice = getchar();
     	switch(choice)
     	{
	   case'1':
	           average(score);break;
	   case'2':
	           sort(num,name,score);break; 
            case'3':
                    printf("请输入您查找的编号(0~4):"); 
	           scanf("%d",&n);
		  search(n,num,name,score);break;
	   default:
	           printf("Chioce Error,Please select again(1~3).");break;	  		   	
         }
         
     }
    return 0;
}


void input(int num[],char name[][20],double score[][4])
{
	for(int j = 0;j <= 4;j++)
	{ 
	      printf("请输入编号:"); 
	      scanf("%d",&num[j]); 
	      //编号0~4 
	      printf("请输入名字:\n");
	      scanf("%s",&name[j]); //给每个编号的人写名字
               double he = 0; 
	      for(int i = 0;i < 3 ;i++)
     	      {	   
    	 	printf("请输入第%d门成绩:\n",i+1);
        	         scanf("%lf",&score[j][i]);	                  
                  he = he + score[j][i];//求和          
     	      }
	  	score[j][3] = he/3;//求出平均数
                  printf("第%d位学生的平均分为%lf\n",j+1,score[j][3]);   
	}
}


void average(double score[][4])
{
	for(int i = 0; i <= 4; i++)
	{
            double he = 0;
	   for(int j = 0; j <= 2; j++)
	   {
   		he = he + score[i][j];//求和 
   	   }
	   double aver = he/3;//求出平均数 
	   score[i][3] = aver;	 
	   printf("第%d位学生的平均分为%lf\n",i+1,score[i][3]);
	}
}
void search(int n,int num[],char name[][20],double score[][4])
{
	int max = 4;/*折半查找法*/
	int min = 0;
	while((min + 1) != max)//当两者相邻时 
	{
	   int mid = (max +min)/2;
	   if(mid > n)
	     max = mid;
	   else if(mid < n)
	     min = mid;  
   	   else
   	   {
   	      printf("名字为%s\n",name[mid]);
	      printf("学号为%d\n",num[n]);
	      for(int i = 0; i < 3; i++)
	      {
      		printf("第%d门功课的成绩为%lf\n",i+1,score[mid][i]);
      	      } 
	      printf("平均分为%lf\n",score[mid][3]);
	      break;
   	   }
	}
         if(max = n)
	{
	      printf("名字为%s\n",name[max]);
	      printf("学号为%d\n",num[n]);
	      for(int i = 0; i < 3; i++)
	      {
      		printf("第%d门功课的成绩为%lf\n",i+1,score[max][i]);
      	      } 
	      printf("平均分为%lf\n",score[max][3]);	
	}
	else if(min = n)
	{ 
              printf("名字为%s\n",name[min]);
	     printf("学号为%d\n",num[n]);
	      for(int i = 0; i < 3; i++)
	      {
      		printf("第%d门功课的成绩为%lf\n",i+1,score[min][i]);
      	      } 
	      printf("平均分为%lf\n",score[min][3]);	
	}
	else
	{
	   printf("date error!");	
	}
	
}
void sort(int num[],char name[][20],double score[][4])
{
	int m = 0,num_1[5];
	int t = 0, t1;
	char temp[6];
	for(int i = 0; i <= 3; i++)
	{
	     for(int j = i+1; j <= 4; j++)
	     {
     	          if( score[i][3] < score[j][3] )
                   {
                      for(int k = 0; k <= 3; k++) 	
		    {
                        t = score[i][k];//交换平均分和分数 
		      score[i][k] = score[j][k];
		      score[j][k] = t;
    		    } 
		      t1 = num[i];//交换学号 
		      num[i] = num[j];
		      num[j] = t1;
		      strcpy(temp,name[i]);//交换名字 
		      strcpy(name[i],name[j]);
		      strcpy(name[j],temp);
                   }
      	     }
	}
	
	for(int i = 0; i <= 4; i++)
	{		
             printf("第%d名的学生学号为%d,该学生名字为%s\n",i+1,num[i],name[i]);	
             for(int j = 0;j <= 3; j++)
	    {
	    	if(j != 3)
	    	   printf("该同学第%d门功课成绩为%lf\n",i+1,score[i][j]);
                  else
                     printf("该同学平均分为%lf\n",score[i][3]);
    	    } 		
	   printf("\n");
	}
}

标签:num,name,int,double,学生,score,printf,录入,平均分
来源: https://blog.csdn.net/qq_52001969/article/details/110738508

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有