高手求教C语言 功能说明:编写程序,实现以下成绩处理功能(输出格式参见示例): 15

1)输入n和n个成绩(成绩为浮点数类型,数组名记为a,假设1≤n≤50);2)计算并输出成绩的累加和(记为sum)与平均成绩(记为ave),将≥ave的成绩归为A档,将<... 1)输入n和n个成绩(成绩为浮点数类型,数组名记为a,假设1≤n≤50);
2)计算并输出成绩的累加和(记为sum)与平均成绩(记为ave),将≥ave的成绩归为A档,将<ave的成绩归为B档;
3)分别统计A、B两档的人数,计算在总人数中的比率;
4)求出A档学生的最低分和B档学生的最高分,它们与平均成绩的差值;
用的软件是 Microsoft Visual C++ 6.0 用C++的方法可能执行不出来
展开
 我来答
never715
推荐于2017-09-20 · TA获得超过942个赞
知道小有建树答主
回答量:1010
采纳率:84%
帮助的人:528万
展开全部

应该很好写的,给你一个参考的(在VC6.0上面调试过):

#include <stdio.h>

#include <stdlib.h>

void insert_sort(float *x, int n);

void main(void)

{

int i=0,j=0,n=0;

float sum=0;

float ave=0;

//申请数组空间

printf("how many people? n=");

scanf("%d",&n);

float *a=(float *)malloc(n*sizeof(float));

//---------end

printf("input n scores\n");

float *p=a;

for (i=0;i<n;i++,p++)

{

printf("NO.%d:",i+1);

scanf("%f",p);

sum+=*p;//求总和

}

ave=sum/n;//求平均分

insert_sort(a,n);//分数由小到大排序,重塑数组

//找到大于或等于平均分的分界点

p=a;

for (i=0;i<n;i++,p++)

{

if (*p>=ave)

{

break;

}

}

//-------------------------end

printf("--------------------all informations below----------------------\n");

printf("sum: %f\n",sum);

printf("ave: %f\n",ave);

printf("numbers of level A people: %d\tA rate: %f%%\n",n-i,100*(float)((n-i)/(n-0.000001)));

printf("numbers of level B people: %d\tB rate: %f%%\n",i,100*(float)(i/(n-0.000001)));

printf("lowest  scores: %f\tdistance from ave: %f\n",a[0],a[0]-ave);

printf("highest scores: %f\tdistance from ave: %f\n",a[n-1],a[n-1]-ave);

free(a);//释放数组空间

}

void insert_sort(float *x, int n)//直接插入排序

{

int i, j;

float t;

for (i=1; i<n; i++)

{

t=*(x+i);

for (j=i-1; j>=0 && t<*(x+j); j--) 

{

*(x+j+1) = *(x+j);

}

*(x+j+1) = t; 

}

}

效果:

意法半导体(中国)投资有限公司
2023-06-12 广告
单片机汇编程序是用汇编语言编写的程序,用于控制单片机的操作。汇编语言是一种比较接近计算机硬件语言的低级语言,相对于高级语言来说更容易理解和实现。下面是单片机汇编程序的基本步骤:1. 将代码和数据汇编到规定的段中。2. 在存储器中用未初始化的... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
xqps754
2011-05-26 · TA获得超过939个赞
知道小有建树答主
回答量:931
采纳率:100%
帮助的人:417万
展开全部

#include"stdio.h"
int mian(){
int a[10],sum=0,avg,i;
for(i=0,;i<10;i++)//输入并累计总分
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
avg=sum/10.0;
printf("平均分:%d",avg);
for(i=0,j=0;i<10;i++)
if(a[i]<avg) j++;
printf("低于平均分人数:%d",j);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LifeReset
电脑发烧友

2011-05-25 · 识迷途其未远,觉今是而昨非
LifeReset
采纳数:902 获赞数:1485

向TA提问 私信TA
展开全部
#include<stdio.h>
void main()
{int n,i,j,k;
float a,b;
float sum,ave,num[50];
float adang[50],bdang[50];
float max(float ma[],int x);
float min(float mi[],int x);
printf("请输入n的值\n");
scanf("%d",&n);
printf("请输入n个数值\n");
for(i=0;i<n;i++)
{scanf("%f",&num[i]);}
sum=0;
for(i=0;i<n;i++)
{sum=sum+num[i];};
ave=sum/n;
printf("总成绩:%.2f\n",sum);
printf("平均成绩:%.2f\n",ave);

j=0;
k=0;
for(i=0;i<n;i++)
{if(num[i]>=ave) {adang[j]=num[i];j++;}
else {bdang[k]=num[i];k++;};
}

printf("A档人数:%d\t所占比例:%.1f%%\n",j,(((float)j/n)*100));
printf("B档人数:%d\t所占比例:%.1f%%\n",k,(((float)k/n)*100));

a=min(adang,j);
b=max(bdang,k);
printf("A档最低分:%.2f\n",a);
printf("B档最高分:%.2f\n",b);
}

float max(float ma[],int x)
{int i;
float t;
t=ma[0];
for(i=0;i<x;i++)
{if(ma[i]>t) t=ma[i];};
return(t);
}

float min(float mi[],int x)
{int i;
float t;
t=mi[0];
for(i=0;i<x;i++)
{if(mi[i]<t) t=mi[i];};
return(t);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式