搜索
查看: 3460|回复: 12
打印 上一主题 下一主题

C语言一天一练--6.August

[复制链接]
跳转到指定楼层
楼主
发表于 2012-8-5 23:33:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10啊哈币
本帖最后由 回遗未来 于 2012-8-6 08:05 编辑

啊哈!背景提示!
-----------------------------------------------------------------------------------------------
    你是光明中学七年级3班的涡子雪同学,学校要开办一个唱歌比赛,
你那个四眼电脑老师要你为这次比赛写一个评分程序(其实是校长要求
四眼电脑老师写的,这个老师太邪恶啦~~~嘎嘎..)

------------------------------------------------------------------------------------------------
程序的一些要求:
            
         1.--评分最高100分,最低1分
         2.--一共有12位评委
         3.--去掉一个最高分,去掉一个最低分,
             求剩下10位评委的平均分.


最佳答案

查看完整内容

[ 本帖最后由 virfyf 于 2012-8-6 10:40 编辑 ]\n\n[mw_shl_code=c,true]#include #include #include #define N 12 #define check(a) ((a)>=1 && (a)
沙发
发表于 2012-8-5 23:33:04 | 只看该作者
[ 本帖最后由 virfyf 于 2012-8-6 10:40 编辑 ]\n\n[mw_shl_code=c,true]#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
#define N 12
#define check(a) ((a)>=1 && (a)<=100)
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define NORMAL 0
int mark[N],minMark=INT_MAX,maxMark=INT_MIN,sumMark=0;
void quit(int retVaule)
{
        printf("按回车键退出程序.\n");
        getchar();
        getchar();
        exit(retVaule);
}
void sum(void)
{
        int i;
        for(i=0;i<N;i++)
        {
                minMark=min(minMark,mark[i]);
                maxMark=max(maxMark,mark[i]);
                sumMark+=mark[i];
        }
        sumMark-=minMark+maxMark;
}
void input(void)
{
        int i;
        printf("请输入\n");
        for(i=0;i<N;i++)
        {
                do
                {
                        printf("%d>",i+1);
                        scanf("%d",&mark[i]);
                        if(!check(mark[i]))
                        {
                                printf("输入格式错误!请重新输入.\n");
                        }
                }while(!check(mark[i]));
        }
}
void print()
{
        printf("去掉一个最高分 %d ,去掉一个最低分%d ,剩下10位评委的平均分为 %f 分.\n",maxMark,minMark,(double)sumMark/(N-2));
}
int main(void)
{
        input();
        sum();
        print();
        quit(NORMAL);
}[/mw_shl_code]

点评

亲~~弄这么专业干嘛??木有必要吧、、、、跪了  发表于 2012-8-6 10:28

评分

参与人数 1啊哈币 +4 收起 理由
回遗未来 + 4

查看全部评分

板凳
发表于 2012-8-6 07:59:53 | 只看该作者
本帖最后由 回遗未来 于 2012-8-6 08:12 编辑

#include<stdio.h>

int main(void)
{
        double  m, sum = 0, a[12];
        int i, j, k, t, n;
        for(i=0; i<12; i++)
        {
                printf("请输入第%d评委打的分数:", i+1);
                scanf("%lf", &m);
                if((m>=1) && (m<=100))
                        a = m;
                else
                {
                        printf("输入错误!\n");
                        i--;
                }
        }
        for(j=0; j<12; j++)
        {
                for(k=0; k<12-j-1; k++)
                {
                        if(a[k]<a[k+1])
                        {
                                t = a[k+1];
                                a[k+1] = a[k];
                                a[k] = t;
                        }
                }
        }
        printf("去掉一个最高分%lf,去掉一个最低分%lf\n", a[0], a[11]);
        for(n=11; n>1; n--)
                sum =sum + a[n] ;
        printf("最后得的平均分是 %lf\n", sum/10.0);
        return 0;
}

点评

亲。。。都是错的啦~~~~看我的标程~~  发表于 2012-8-6 08:14
地板
发表于 2012-8-6 08:12:54 | 只看该作者
life 发表于 2012-8-6 07:59
#include

int main(void)

亲 麻烦你调试过了再发代码。。。。都是错的。。。。
5#
发表于 2012-8-6 08:12:57 | 只看该作者
本帖最后由 回遗未来 于 2012-8-6 10:29 编辑

[mw_shl_code=c,true]
<P>
#include<stdio.h>

int main(void)
{
double m, sum = 0, a[12];
int i, j, k, t, n;
for(i=0; i<12; i++)
{
printf("请输入第%d评委打的分数:", i+1);
scanf("%lf", &m);
if(m>=1 && m<=100)
a = m;
else
{
printf("输入错误!\n");
i--;
}
}
for(j=0; j<12; j++)
{
for(k=0; k<12-j-1; k++)
{
if(a[k]<a[k+1])
{
t = a[k+1];
a[k+1] = a[k];
a[k] = t;
}
}
}
printf("去掉一个最高分%lf,去掉一个最低分%lf\n", a[0], a[11]);
for(n=10; n>=1; n--)
sum =sum + a[n] ;
printf("最后得的平均分是 %lf\n", sum/10.0);
return 0;
}

</P>[/mw_shl_code]

点评

这个是我写的标程 麻烦各位自己先思考再看标称  发表于 2012-8-6 08:13
6#
发表于 2012-8-6 13:31:04 | 只看该作者
#include<stdio.h>
int main(void)
{
double  m, sum = 0, a[11];
int i, j, k, t, n;
for(i=0; i<12; i++)
{
  printf("请输入第%d评委打的分数:", i+1);
  scanf("%lf", &m);
  if((m>=1) && (m<=100))
   a = m;
  else
  {
   printf("输入错误!\n");
   i--;
  }
}
for(j=0; j<12; j++)
{
  for(k=0; k<12-j-1; k++)
  {
   if(a[k]<a[k+1])
   {
    t = a[k+1];
    a[k+1] = a[k];
    a[k] = t;
   }
  }
}
printf("去掉一个最高分%lf,去掉一个最底分%lf\n", a[0], a[11]);
sum = a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]+a[10];
printf("最后得的平均分是 %lf\n", sum/10.0);
return 0;
}

点评

else { printf("输入错误!\n"); i--; } 如果此时i=0...  发表于 2012-8-6 16:55
很好 赞一个 其实还有更优的算法 速度比这更快  发表于 2012-8-6 14:16

评分

参与人数 1啊哈币 +2 收起 理由
回遗未来 + 2

查看全部评分

7#
发表于 2012-8-6 14:21:54 | 只看该作者
你们有没有觉得这是N方+N的时间复杂度 有一种ON的时间复杂度 代码如下
[mw_shl_code=c,true]#include <stdio.h>
int main()
{
    double sum=0,a[12],min=999999,max=0;
    int i,j;
    for(i=0; i<12; i++)
    {
        printf("请输入第%d号选手的得分:",i+1);
        scanf("%lf",&a);
    }
    for(i=0; i<12; i++)
    {
        sum+=a;
        if(a>max)
            max=a;
        if(a<min)
            min=a;
    }
    sum=sum-max-min;
    printf("这位选手的最终得分是%lf分!",sum/10.0);
    return 0;
}
[/mw_shl_code]
8#
 楼主| 发表于 2012-8-6 20:48:27 | 只看该作者
回遗未来 发表于 2012-8-6 14:21
你们有没有觉得这是N方+N的时间复杂度 有一种ON的时间复杂度 代码如下
[mw_shl_code=c,true]#include
in ...

版主....您来太晚了.....
9#
发表于 2012-8-7 08:35:08 | 只看该作者
月光疾风 发表于 2012-8-6 20:48
版主....您来太晚了.....

神马意思啊???
10#
发表于 2012-8-7 18:34:25 | 只看该作者
好专业
11#
发表于 2012-8-13 19:18:54 | 只看该作者
有木有小白能看懂的。。。。
12#
发表于 2012-12-13 13:07:20 | 只看该作者
标示鸭梨很大呀!
13#
发表于 2012-12-16 12:38:50 | 只看该作者
#include <stdio.h>
int main()
{
        int a=0,b=0,c,d=1,e=0;
     printf("请输入第一个分数\n");
     scanf("%d",&c);
     a=c;
     b=c;
     e=e+c;
    for(d;d<=11;d=d+1)
        {
                printf("请输入下一个分数\n");
                scanf("%d",&c);
                        if(c>a)
                        {
                                a=c;
                        }
                        if(c<b)
                        {       
                                b=c;
                        }
                e=e+c;
    }
    e=e-a-b;
        printf("得分是%d",e);
        sleep(5000);
        return 0;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表