首页 > 其他分享 >指针练习班级成绩

指针练习班级成绩

时间:2024-05-20 16:23:11浏览次数:23  
标签:班级 int void 练习 arr 99 89 include 指针

1.求第一门课程的平均分
2.找出有两门以上不及格的学生
3.找出平均分在90分以上或全部课程在85分以上的学生

#include<stdio.h>
#include<math.h>
#include<string.h>
#define M 4
#define N 5
void Average(int *arr,int n);
void TwoFail(int *arr);
void OutputFail(int (*p)[N],int i);
void GoodStudents(int *arr);

int main(void){
    int arr[M][N]={{34,56,88,99,89},{27,88,99,67,78},{99,90,87,86,89},{78,89,99,56,77}};
    Average(arr,0);
    TwoFail(arr);
    GoodStudents(arr);
}

void Average(int *arr,int n){
    int (*p)[N]=arr;
    float average=0;
    for(int i=0;i<M;i++){
        average+=*(*(p+i)+n);
    }

    printf("the %d class average is %f:",n,average/M);

}

void TwoFail(int *arr){
    int (*p)[N]=arr;int flag=0;
    for(int i=0;i<M;i++){
            flag=0;
        for(int j=0;j<N;j++){
            if(*(*(p+i)+j)<60)
                flag++;
        }

        if(flag==2){
           OutputFail(p+i,i);
           continue;
        }

    }
}

void OutputFail(int (*p)[N],int i){
    printf("NO.%d student's fail.\n",i);
    float average=0;
    printf("scores are:");
    for(int j=0;j<N;j++){
        printf("%d ",*(*p+j));
        average+=*(*p+j);
    }

    printf("\nAverage is %f\n",average/N);
}

void GoodStudents(int *arr){
    int ave90=1,ab85=1;
    float average;
    int (*p)[N]=arr;
    int Good[M];//save good student flag.
    for(int i=0;i<M;i++){
        Good[i]=0;
    }
    for(int i=0;i<M;i++){
        average=0;ave90=1;ab85=1;
        for(int j=0;j<N;j++){
                average+=*(*(p+i)+j);
            if(*((*p+i)+j)<85){
                ab85=0;
            }
        }

        average/=N;
        if(average<90)ave90=0;

        if(ave90||ab85)Good[i]=1;

    }

    for(int i=0;i<M;i++)
    if(Good[i])
        printf("%d is a good student.\n",i);


}

标签:班级,int,void,练习,arr,99,89,include,指针
From: https://www.cnblogs.com/zhongta/p/18202213

相关文章

  • 指针数组练习排列字符串
    用指针数组实现排列字符串#include<stdio.h>#include<math.h>#include<string.h>#defineN5voidOrderString(char*p[],intn);intmain(){char*arr[10]={"Hello","Howareyou?","I'mfine","Ilovecomputer......
  • 练习
    1234......
  • 指针练习5*5矩阵最大最小值
    将最大值放在5*5矩阵中央将左上右上左下右下分别放第1,2,3,4的最小值#include<stdio.h>#include<math.h>#include<string.h>#defineN5voidMove(int(*arr)[N]);int*Max(int(*arr)[N]);voidMin4(int(*arr)[N]);voidSwap(int*x,int*y);intmain(){intarr[5]......
  • 指针练习N个人报数,每报到3的人出局
    #include<stdio.h>#include<math.h>voidRound(int*arr,intn);voidSearchLast(int*arr,intn);intmain(void){intarr[4];Round(arr,4);SearchLast(arr,4);}voidRound(int*arr,intn){intflag=n;inti=0;for(i=0;i<n;i++)/......
  • 指针练习N个数后移M个位置
    有N个整数,使前面各数顺序向后移动M个位置,最后M个数变成最前面M个数。#include<stdio.h>#include<math.h>voidMove(int*arr,intn,intm);intmain(void){intarr[10]={99,88,77,66,55,44,33,22,11,0};printf("beforemove:\n");for(inti=0;i<10;i++)pr......
  • 指针练习输入十个数
    将最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:1.输入10个数。2.进行处理。3.输出10个数。#include<stdio.h>#include<math.h>voidInput(int*arr);voidChange(int*arr);voidOutput(int*arr);intmain(void){Input(arr);Change(arr);......
  • C语言编程题练习 (从初识到入门再到进阶)修正版
    C语言编程题练习......
  • C语言中多维数组和多重指针的区别
    比如下面这段代码:charstr[3][3]={"aa","bb","cc"};char**p=str;char*s1=str[0];char*s2=p[0];有什么问题?我们来看实际的内存布局,str是一个多维数组,它的尺寸实际上是3*3=9个char。也就是一共8bit*9=72bit,而在一台64位机器上,一个char*的大小就是64位,所以对......
  • 结构体中的指针&&拷贝赋值构造函数改造
    带有成员指针的结构体的拷贝1.问题使用结构体时,在析构时发生了**重复释放指针**的错误。2.原因定义了QList<结构体>,使用append添加结构体对象并未此结构体中的指针分配了空间,append会执行值拷贝,此时会创建新的副本添加进QList中,值得注意的是:append执行拷贝时并不会分配地......
  • matlab练习程序(线性常微分方程组矩阵解)
    之前有通过ode和simulink解线性常微分方程组。除了上面两种方法,线性常微分方程组还可以通过矩阵的方法求解。比如下面这个之前使用的方程组:x''=x'-x+y'-z'y''=y'-y-x'z''=z'-z+x'可以写成下面矩阵形式: 设这个矩阵为A,那么解可以表示为如下形式:可以直......