程序设计的其他问题

面试题1:下面的switch语句输出什么?

代码:

         int  n= 'C';

         switch(n++)

               {

               default:printf("error"); break;

                case‘a’:

                case' A':

                case'b':

                case' B':

                printf("ab");break;

                case' c':   case' C':              printf("c");

                 case' d':   case' D':              printf("d");

                

}

                      A: cdd    B  cd     C abcd   D cderror

               答案:B

面试题2:上机题目描述:选秀节目打分,分为专家评委和大众评委,score[]数组里面存储每个评委打的分数,judge_type[]里存储与score[]数组对应的评委类别,judge_type==1,表示专家评委,judge_type==2,表示大众评委,n表示评委总数。 打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分=专家评委平均分 *0.6+大众评委* 0.4,总分取整。 函数最终返回选手得分。


函数接口: int  score(int n, int  score[], int judge_type[]);

解析: 上机题目都是很简单的,但是考的就是考虑问题全面与否。

           int  CallScore ( int N, int * Score , int * Judge _type)

            {

               int ret = 0, n =0, m=0;

              double sum1 =0, sum2 = 0;//评分可能出现小数,所以要用双精度

               if(N&&Score&&Judge_type)

                 {

                    for(int i =0; i<N; ++i)

                     {

                          switch(Judge_type[i])

                          {

                           case 1: sum1 + = Score[i]; ++n; break;

                            case 2: sum2+= Score[i];   ++m; break;

                             default:;    //舍弃不符合要求数据

                          }

                       if(n) sum1 = int (sum1/n);//考虑到专家人数可能为0,务必确保除数不为0;

                       if(m) sum2 = int (sum2/m);//考虑到大众评委人数可能为0,务必确保除数不为0;

                          ret= m?sum1*0.6+sum2*0.4:sum1;// 最后总分数去整数,要把double转换成int


                     }

}

return ret;

}









阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lplp90908/article/details/49954105
个人分类: 程序员面试宝典题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭