C语言指针对二维数组输入输出

C语言使用指针对成绩的录入和输入

//指向数组的指针作为函数参数
/*例题题目来源于谭浩强C语言编程第五版251页
有一个班,有三名同学,各学四门课,计算总平均分和指定某位同学的全部成绩
并且能自主判断不及格同学的各科成绩
*/
#include 
int main()
{
    void average(float * p,int n );
    void search(float(*p)[4],int n);
    void score_input(float score[3][4]);
    void pointer_score_input(float * p,int n);
    float score[3][4];
    //score_input(score);//数组版的输入
    pointer_score_input(score,12);//指针版输入
    average(*score,12);
    search(score,3);
    return 0;

}
//定义求平均值函数
void average(float * p,int n )
{

    float sum=0,aver;
    float * p_end;
    for(p_end=p;p<p_end+n;p++)
        sum=sum+(*p);
    aver=sum/n;
    printf("分数平均值为:%f\n",aver);
}
//定义寻找成绩函数
void search(float(*p)[4],int n)  //这里的(*p)[4]是指向具有4个一维数组的指针
{
    int i,j,m,flag=0;
    //printf("这个成绩的同学是%d同学\n",n);
    for(j=0;j<n;j++)
     {for (i=0;i<4;i++)


     if(*(*(p+j)+i)<60)

        flag=1;
        if(flag==1)
        {

          printf("不及格同学是%d,其各科成绩是\n",j+1);
          flag=0;
          printf("\n");
    for (m=0;m<4;m++)

         printf("  %f",*(*(p+j)+m));//前面那个*(p+n)是指第几个同学,后面i是指这位同学第几门的成绩


         }
printf("\n");

          }


    printf("\n");
}
//成绩输入函数
void score_input(float score[3][4])
{
    int i,j;
    printf("请你输入学生的成绩");
    for(i=0;i<3;i++)
        for(j=0;j<4;j++)
        scanf("  %f",&score[i][j]);
    printf("输入完毕\n");
}
//指针版输入成绩函数
void pointer_score_input(float * p,int n)
{
    float *score_pointer;
    score_pointer=p+n;//把地址送给score_pointer指针
    printf("请你输入学生的成绩\n");
    for(;p<score_pointer;p++)//此时的P指针指向的地址已经是scored的首地址
        scanf("%f",p);      //  向指定地址写入数据
    printf("输入完毕了\n");

}

你可能感兴趣的:(C语言,c语言,算法,开发语言)