c语言上机程序函数传递数组

img

#include "stdio.h"
void main()
{
    int a[30];
    int i,j,t,n=0,cnt=0;
    float avg = 0;
    
    while(n<30){
        scanf("%d",&t);
        if(t>0){            
            a[n++]=t;
            avg += t;
            if(t<60) 
                cnt++;
        }else{
            break;
        }
    }
    //平均分
    avg = avg/n;
    printf("不及格人数是:%d\n",cnt);
    cnt=0;
    for(i=0;i<n;i++){
        if(a[i]>avg)
            cnt++;
    }
    printf("大于平均分的人数是:%d\n",cnt);
}
#include "stdio.h"
#include "time.h"
#include "windows.h"
int Radom(int a,int b)
{
 return rand()%(b-a+1)+a;
}
// 定义一个结构体
struct _CJinf{
 char kcName[50]; //课程名称
 char xsNum[24]; //学生学号
 char xsName[50]; //学生姓名
 float cj; //学生成绩
};
// 求解平均分
float print_avr(struct _CJinf *lpCJ,int len)
{
 int i,count=0;
 float fsum=0.0;
 for(i=0;len>i;i++)
 {
  fsum+=lpCJ[i].cj;
 }
 if(len>0)
 {
  fsum=fsum/len;
 }
 return fsum;
}
// 统计不及格
int print_fail(struct _CJinf *lpCJ,int len)
{
 int i,count=0;
 for(i=0;len>i;i++)
 {
  if(60.0>lpCJ[i].cj)
  {
   printf("%s\t: %s:%.1f\n",lpCJ[i].xsName,lpCJ[i].kcName,lpCJ[i].cj);
   count++;
  }
 }
 printf("\n统计不及格人数:%d\n",count);
 return count;
}
// 排序一下
int print_sort(struct _CJinf *lpCJ,int len)
{
 int i,j,k;
 struct _CJinf temp;
 for(i=0;len>i;i++)
 {
  for(k=j=i;len>j+1;j++)
  {
   if(lpCJ[j].cj>lpCJ[k].cj)
   {
    k=j;
   }
  }
  if(k!=i)
  {
   temp=lpCJ[i];
   lpCJ[i]=lpCJ[k];
   lpCJ[k]=temp;
    
   //memcpy(&temp,&lpCJ[i],sizeof(struct _CJinf));
  } 
 }
 return 0;
}
int main()
{
  
 // 从键盘输入一个班(不超过30人)学生某门课的成绩
 // 当输入成绩为负值时,则输入结束,统计并输出不及格人数并打印不及格学生的成绩,按成绩高低排序,输出该班最高分及最低分。
 struct _CJinf *CJinf,CJinfo[30],temp;
 int sumStu;
 int i;
  
 sumStu=30;
  
 // srand(time(NULL));
 for(i=0;sumStu>i;i++)
 {
   
  wsprintf(CJinfo[i].kcName,"语文");
  wsprintf(CJinfo[i].xsNum,"20103142%02d",i);
  wsprintf(CJinfo[i].xsName,"学生_%02d",i);
  // CJinfo[i].cj=(float)Radom(60,100);
  printf("%s\t: %s的成绩:",CJinfo[i].xsName,CJinfo[i].kcName);
  fflush(stdin);
  scanf("%f",&CJinfo[i].cj);
  if(CJinfo[i].cj<0) break;
  if(CJinfo[i].cj>100.0)
  {
   printf("\t[输入的成绩有误了:%.2f,请重新输入]\n\n",CJinfo[i].cj);
   i--;
   continue;
  }
 }
 sumStu=i;

 printf("\n\n全体学生的信息:\n");
 for(i=0;sumStu>i;i++)
 {
  temp=CJinfo[i];
  printf("%s\t: %s\t%.0f\n",temp.xsName,temp.kcName,temp.cj);
 }
 CJinf=CJinfo;
 print_fail(CJinf,sumStu);
 print_sort(CJinf,sumStu);
  
 printf("\n\n排序后的信息:\n");
 for(i=0;sumStu>i;i++)
 {
  temp=CJinfo[i];
  printf("%s\t: %s\t%.0f\n",temp.xsName,temp.kcName,temp.cj);
 }
 temp=CJinfo[0];
 printf("\n最高分:%.1f\t(%s)\n",temp.cj,temp.xsName);
 temp=CJinfo[sumStu-1];
 printf("最低分:%.1f\t(%s)\n",temp.cj,temp.xsName);
 printf("平均分:%.2f\n\n",print_avr(CJinf,sumStu));

 return 0;
}