24小时热门版块排行榜    

查看: 1460  |  回复: 14
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

我爱小虫子

新虫 (正式写手)

[求助] 求助,一道简单却不能小觑的题目 已有2人参与

华为的一道笔试题目,上机在线测试,最简单的一道,却做的这么狼狈,望大神给看看,到底是哪种情况没有考虑到,,
状态是:程序没有错误,但是存在没有考虑到的测试用例(3个测试用例,有一个没有通过,PS:我无法知道测试用例)
谢谢大家!
要求:初级题:从考试成绩中划出及格线
10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:
(1) 及格线是10的倍数;
(2) 保证至少有60%的学生及格;
(3) 如果所有的学生都高于60分,则及格线为60分

int level(int *a,int n)
{

        for(int s=60;s>=10;s=s-10)
        {  
                int cnt=0;

                for(int j=0;j<n;j++)
                {
                        if(a[j]>=s) cnt++;
                }
                if(cnt>=0.6*n) return s;
        }
        return 0;
}

void main()
{
        int a[10];
        for(int i=0;i<10;i++)
        {
                cin>>a;
        }

        cout<<level(a,10)<<endl;
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cgzhang_gg

铜虫 (著名写手)

按照要求分数线也有可能大于60分比如70 80 90
下面是我写的程序。
int main()
{
  const int n=10;
  int a[n];

int level(const int *, const int);
  for(int i=0; i < n; i++)
     cin >> a;
    cout << "level of score is:"
         <<level(a, n) << endl;
   return 0;
}

int level(const int *a, const int n)
{
  for(int j=10; j >= 0; j--)
    {
       int d = j*10;
       int cnt = 0;
      for(int i = 0; i < n; i++)
         if(a >= d) cnt++;
      if(d >  60 )
        {
          if(cnt >= (int)(0.6*n) && cnt < n)
            return d;
          if( cnt == n)  return 60;}
       else
          if(cnt >= (int)(0.6*n))
            return d;

    }
}
14楼2014-03-13 15:23:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 我爱小虫子 的主题更新
信息提示
请填处理意见