#include<stdio.h> #include<stdlib.h> void stat(int a[10]); void main() { int score[10]={0},scoreint=0,i; int x=0,y=0,z=0,k=0; char scorestr[200]; char *ptr=scorestr;
printf("请输入10名学员的成绩(输入格式为:80,90,66,78,34,60,99,67,89,67):\n");
gets(scorestr);
while(*ptr) {
if(*ptr>='0'&&*ptr<='9') { score[scoreint]=score[scoreint]*10; score[scoreint]=*ptr-'0'+score[scoreint]; } else { if(*ptr==',') { scoreint++; } else { printf("输入错误!\n"); exit(0); } } ptr++; }
printf("\n");
stat(score);
for(i=0;i<10;i++) { if(score[i]>85) x+=1; else if(score[i]>=70&&score[i]<85) y+=1; else if(score[i]>=60&&score[i]<69) z+=1; else if(score[i]<60) k+=1; }
printf("根据分数段统计学员成绩:\n"); printf("85分以上的:%2d名学员 占总学员数的%2d%%\n",x,x*10); printf("70-84分的:%2d名学员 占总学员数的%2d%%\n",y,y*10); printf("60-69分的:%2d名学员 占总学员数的%2d%%\n",z,z*10); printf("60分以下的:%2d名学员 占总学员数的%2d%%\n",k,k*10); }
void stat(int a[10]) { int sum=a[0],max,min; float avg; int i;
for(i=1;i<10;i++) { sum=sum+a[i]; }
avg=((float)sum)/10; max=a[0];
for(i=1;i<10;i++) { if(max<a[i]) max=a[i]; }
min=a[0]; for(i=0;i<10;i++) { if(min>a[i]) min=a[i]; }
printf("总成绩:%d分\n",sum); printf("平均分:%.1f分\n",avg); printf("最高分:%d分\n",max); printf("最低分:%d分\n",min); printf("\n"); } 有个问题. avg=((float)sum)/10; 这个求平均分数的,为什么要强制转换成 float 后, 输出时才看到 78.5 ,不转换就看到 78 呢.? 我sum本来是 int 的, avg是 float, 我直接用 avg=sum/10 就不行...
[此贴子已经被作者于2005-8-10 18:04:22编辑过]