求解2道C程序设计题

来源:百度知道 编辑:UC知道 时间:2024/06/02 07:12:53
1.10个评委打分,分数为1-100,选手得分为去掉最高分和最低分的平均值。另外,对评委评分进行裁判,在10个评委中找出最公平(评分最接近平均分)和最不公平(与平均分差距最大)的评委。
2.有N个正整数(N《=20),将他们连成一排,组成一个最大多位数。程序输入:N,程序输出:N个数连成的多位数。
以下是设计思路:
比如我输入的是: 123 2 33 1006 12,我先找出最大的数字的位数为四位,再将所有的数字变为四位数:1230 2000 3300 1006 1200
然后排序 3300 2000 1230 1200 1006
再将后面加上去的0去掉的序列就是最大的数字了。
越快越好,越简单越好

/*1.----------------------------------------------------------------*/

#include "stdio.h"
#include "math.h"
float pj;
int mbgb;
int findpj(float *a)
{
int i,x=0,y=0;
float m=a[0],n=a[0],s=0;
for(i=1;i<10;i++)
{
s+=a[i];
if(a[i]>m) {m=a[i];x=i;}
else if(a[i]<n) {n=a[i];y=i;}
}
s-=m;
s-=n;
pj=s/8.0;
if(pj-n>m-pj)
mbgb=y;
else mbgb=x;
return 0;
}

int main()
{
int i,gb=0;
float a[10];
float b;
printf("请输入十个评委的评分:(请用空格隔开)\n");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
findpj(a);
printf("选手得分为(去掉最高分和最低分的平均值):%f\n最不公平的评委为:第%d位\n",pj,mbgb+1);
b=fabs(a[0]-pj);
for(i=1;i<10;i++)
{
if(fabs(a[i]-pj)<b)
{gb=i;b=fabs(a[i]-pj);}
}
printf(&qu