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;
}