指针练习,查找学生成绩并输出平均成绩和排名信息 每日一练(四)

来源:互联网 发布:淘宝店铺怎么 编辑:程序博客网 时间:2024/05/12 18:11

总结:1、注意函数调用时如果用到其他函数的变量,要进行参数传递,会写形参和实参,由指针指向;可以在前面定义一些数组,然后由指针分别指向这些数组,那么接下来这些数组和指针都能在其他函数中得到调用;

           2、C中函数如果main函数在前面的话一定要声明函数在最前面;

           3、函数从main函数执行,因此main函数中的函数调用的顺序很重要,哪个函数在前面很重要

          4、本题的排名用排序,然后去判断相等得到排名信息,也可以在sort函数交换数据的时候同时交换学号信息,但是不是很好。

 

#include<stdio.h>//*****指针练习,n个学生,每人四门课,计算平均分,查询各科成绩,排名*****//#define N 10float score[N][4]={{90,99,97,98},{65,67,70,60},{80,87,90,81}};//存成绩信息,用二维指针float aver[N];        //存平均成绩,用指针*q指导这float array1[N];      //存排名信息,用指针*r指到这    //每定义一个指针就要定义一个不管是空的还是非空的数组指向它,不能浮游指针。这四个数组中有三个是初始化用的,没有存东西开始//float(*p)[4];void search(float(*p)[4],float*q,float*r);void average(float(*p)[4],float*q);void sort(float*r,float*q);int main(void){   average(score,aver);sort(array1,aver);search(score,aver,array1);} //***********求平均成绩,传递了所有人的成绩并将平均成绩存到指针*q指向的数组float aver[N]中*******************//void average(float(*p)[4],float*q)   {   int i,j;   for(i=0;i<N;i++)   {   float sum=0.0;   for(j=0;j<4;j++)   sum+=*(*(p+i)+j);   *(q+i)=sum/4;       }   }//********冒泡排序将平均成绩*********//void sort(float*r,float*q){//复制*q里面存的平均分int i,j;float temp;int b[N];for(i=0;i<4;i++)    *(r+i)=*(q+i);          for(j=0;j<N-1;j++){           for(i=0;i<N-1-j;i++)          {               if(*(r+i)<*(r+i+1))//数组元素大小按降序排列             {                 temp=*(r+i);                 *(r+i)=*(r+i+1);                 *(r+i+1)=temp;    }      }   }}//*********查找函数找到所有分数,并且将平均成绩和排名都在此函数中输出,注意一些细节*********************//// void search(float(*p)[4],float*q,float*r)//定义二维指针,并将二维数组首地址给它   {   int i,m=0;   printf("Input zhe ID of the student:\t");   scanf("%d",&m);   printf("\nAll the score of the student:\t");   for(i=0;i<4;i++)   {   printf("%5.2f\t",*(*(p+m-1)+i));//要减一   }   printf("\nThe average score of the student:%5.2f\t",*(q+m-1));//要减一   for(i=0;i<N;i++)   {   if(*(q+m-1)==*(r+i))//要减一        printf("\nThe ranking of the student:%d\t",i+1);//sort函数已经排好顺序,现在只要比较就行,相等则就是它的排名,要加一   }     }


 

0 0
原创粉丝点击