
#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;
}