各位神,c语言问题,希望用简单的编写,说明步骤,附带运行截图和结果截图

要求:输入一个班25名学生的C语言成绩(整数),求它们的平均分,最高分,最低分,并输出。把成绩按从高到低输出。

有问题可以提哈,给你运行出来了

img

img

#include <stdio.h>
#include <stdlib.h>
#define N 25
/*提示用户的输入25个数,找到最大值,找到最小值,计算平均值*/

int main()
{
     int  i;
     int  max;
     int  min;
     int  total=0;
     float  average;
          
    //1.定义一个25个整型数的数组
      int  scores[25]={0};
      
    //2.初始化数组
       for(i=0;i<25;i++)
       { 
         //2.1提示用户输入第多少个数
         printf("请输入第%d个分数: ",i+1);//0+1=1
         
        //2.2获取用户的输入scanf
         scanf("%d",&scores[i]);
         if(scores[i]>100 || scores[i]<0)
         {
                printf("没有这种分数\n");
                printf("强制退出\n");
                system("pause");
                exit(-1);         
         }
       }
       
       for(i=0;i<25;i++)
       {
            printf("第%d个分数是:%d\n",i+1,scores[i]);       
       }
        
   //3.找分数,找最高分
      max=scores[0];//让max等于数组的第0项,
         
      for(i=0;i<25;i++)
       {
               if(max<scores[i])
               {
                    max=scores[i];               
               }
       }
       printf("最高分是:%d\n",max);
       
   //4.找最低分
       min=scores[0];//让min等于数组的第0项,
         
      for(i=0;i<25;i++)
       {
               if(min>scores[i])
               {
                    min=scores[i];               
               }
       }
       printf("最低分是:%d\n",min);
   
     //5.计算平均值
     //5.1算出总分
      for(i=0;i<25;i++)
      {
          total+=scores[i];
          //total=total+datas[i]   
      }
      
     //5.2求平均值
       average=(float)total/25;
          
   //6.输出结果    
       printf("平均分是:%f\n",average);
           
    
     fac(scores);
     for(i=0; i<N; i++)
        printf("%4d",scores[i]);
      system("pause");
      return 0;
}

int fac(int ans[]) {
    int i,j,t;
    for(i=0; i<N-1; i++)
        for(j=0; j<N-1-i; j++)
            if(ans[j]>ans[j+1]) {
                t=ans[i];
                ans[j]=ans[j+1];
                ans[j+1]=t;
            }
}


实现的步骤

img

#include <stdio.h>
#include <stdlib.h>
#define NMAX  25

/*冒泡法排序*/
void  maopao(int ans[]) {
    int i,j,t;
    for(i=0; i<NMAX-1; i++)
        for(j=0; j<NMAX-1-i; j++)
            if(ans[j]>ans[j+1]) {
                t=ans[i];
                ans[j]=ans[j+1];
                ans[j+1]=t;
            }
}

int main() {
    int  i,j ;/*用于控制循环的变量*/
    int  max=0,min=100;/*用于记录最高和最低成绩的变量*/
    int  sum=0;/*用于记录成绩总和的变量*/
    float  average;;/*用于记录平均成绩的变量*/

    /*1.定义一个NMAX(这里是25)个整型数的数组*/
    int  scores[NMAX ];

    /*2.接收输入成绩来完成初始化数组*/
    for(i=0; i<25; i++) {
        /*2.1提示用户输入第多少个数*/
        printf("请输入第%d个分数: ",i+1);//0+1=1
        /*2.2获取用户的输入scanf*/
        scanf("%d",&scores[i]);
        if(scores[i]>100 || scores[i]<0) {
            printf("没有这种分数\n");
            printf("强制退出\n");
            system("pause");
            exit(-1);
        }
        sum=sum +scores[i];
        if(scores[i]>max) max = scores[i]; /*更新最高成绩*/
        if(scores[i]<min ) min=scores[i];    /*更新最低成绩*/
    }
    /*在排序前显示录入的成绩情况*/
    printf("排序前成绩列表情况是:\n“);
    for(i=0;i<NMAX;i++)        printf("第%d个分数是:%d\n",i+1,scores[i]);
    /*输出最高、最低成绩*/
    printf("最高分是:%d\n",max);
    printf("最低分是:%d\n",min);
    /*求平均值*/
    average= (float)sum / NMAX ;
    /*输出平均值(保留2位小数)结果    */
    printf("平均分是:%.2f\n\n",average);
    /*排序*/
    maopao(scores);
    /*输出排序后情况*/
    printf("排序后成绩排名情况是:\n“);
    for(i=0; i<NMAX; i++)   printf("第%d个分数是:%d\n",i+1,scores[NMAX-1-i]);
    return 0;
} 

其实也可以先排序后输出最高和最低成绩(因为排序后这两个分别是数组的首尾元素啦)

先排序,再计算

结构体链表或结构体数组

解答如下

img

#include <stdio.h>
#include <stdlib.h>
double calave(int t[],int n) 
{
    double sum=0;
    for(int i=0;i<n;i++)
        sum+=t[i];
    return sum/n;
}

void sort(int arr[],int size)
{
    for(int i=0; i<size-1; i++)
    {
        for(int j=0; j<size-1-i; j++)
        {
            if(arr[j]<arr[j+1])
            {
                int tem=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=tem;
            }
        }
    }
}
int main()
{
    int n=25;
    int t[n];
    for(int i=0;i<n;i++)
        t[i]=rand()%50+50;
    for(int i=0;i<n;i++)
    {
        printf("%d ",t[i]);
        if((i+1)%5==0)
        printf("\n");
    }
    printf("\n");
    sort(t,n);
    printf("平均分:%.2lf\n",calave(t,n));
    printf("最高分:%d\n",t[0]);
    printf("最低分:%d\n",t[n-1]);
    printf("\n");
    printf("高到低输出:\n");
    for(int i=0;i<n;i++)
    {
        printf("%d ",t[i]);
        if((i+1)%5==0)
        printf("\n");
    }
    return 0;
}