華爲歷年機試題型總結系列(五)

12.亮燈數量

描述:一條長廊裏依次裝有n(1<=n<=65535)盞燈,從頭到尾編號1、2、3、……n-1、n。每盞燈由一個拉線開關控制。開始,電燈全部關着。有n個學生從長廊經過,第一個學生把號碼凡是1的倍數的電燈的開關拉一下;第二個學生把號碼凡是2的倍數的電燈開關拉一下;接着第三個學生把號碼凡是3的倍數的電燈開關拉一下;如此繼續下去,最後第n個學生把號碼凡是n的倍數的電燈的開關拉一下。n個學生按此規定走完後,長廊裏電燈有幾盞燈亮着。注意:電燈數和學生數一致。

輸入:電燈的數量。輸出:亮着的電燈數量。 例如,輸入:2 輸出:1。輸入:3 輸出:3

#include<stdio.h>

int main(void)
{
    int i,j,k,LigthsNumber,StudentsNumber,count_LightsOn=0;
    int LightState[100]={0};  //初始化燈狀態數組爲0,表示爲關

    printf("Input the number of Lights:\n");
    scanf("%d",LightsNumber);

    StudentsNumber=LightsNumber;

    for(i=1;i<=StudentsNumber;++i)
    {
         for(j=1;j<=LightsNumber;++j)
        {
              if(i%j==0)    //如果學生編號是等編號整數倍
                  ++LightState[j-1];    //對應編號的燈的狀態+1,數組編號和燈編號差1
        }
    }

    for(k=0;k<LightsNumber;++k)
    {
          if(LightState[k]%2==1)     //如果是奇數,說明燈的狀態爲開,反之爲關
               ++count_LightsOn;
    }

    printf("The number of Light On: %d",count_LightsOn);

    return 0;
}

13. 及格線

描述:10個考生考完期末考試後,老師需要劃出及格線,要求如下:

(1)及格線是10的倍數;

(2)保證至少60%的學生及格;

(3)如果所有的學生都高於60分,則及格線爲60分

輸入:10個整數,取值0-100。輸出:輸出及格線,10的倍數

#include<stdio.h>

int main(void)
{
    int i,j,temp,qualified_line;
    int score[10]={0}; //存放學生成績數組,初始化爲0

    printf("Input 10 students' scores and use ',' to seperate.\n");
    
    scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",&score[0],&score[1],&score[2],&score[3],&score[4],&score[5],&score[6],&score[7],&score[8],&score[9]);

      for(i=0;i<9;--i)
     {
          for(j=0;j<9-i;--j)
          {
                if(score[j]>score[j+1])   //冒泡升序排列
                {
                     temp=score[j];
                     score[j]=score[j+1];
                     score[j+1]=temp;
                }
          }
     }

     if(score[0]>=60)    //如果所有成績大於60
          qualified_line=60;
     else
           qualified_line=(score[4]/10)*10;  //至少6人成績比qualified_line大,保證及格率>60%

     printf("The qualified score line: %d",qualified_line);

     return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章