每日程式C語言37-圈子報數問題
阿新 • • 發佈:2021-02-18
題目:
有n個人圍城一圈,順序排好。從第一個人開始報數(從1到3報數),凡是報到3的人退出圈子,問最後留下的是原來的第幾號的那位
程式分析
可以使用陣列來儲存資料,在圈內記為1,不在圈內記為0
主要程式碼
main.c
int main(){
int a[50], i, n, flag=0;
scanf("%d", &n);
int count=n;
for (i=1; i<=n; i++)
a[i]=1;//所有人都在圈內,為1
for (i=1; ;i++){
if (i==n+1)
i=1;//如果i超出了n個人,讓他重新回到1
if (a[i]!=0) flag++;
else continue;
if (flag%3==0){
a[i]=0;
count--;
}
if (count==1)//表示只剩下一個人在圈內
break;
}
for (i=1; i<=n; i++)
if (a[i]!=0)
printf("%d", i);
system("pause");
return 0;
}
執行結果
今日鞏固
- 靈活使用陣列解決實際問題
- for迴圈的判斷條件不寫情況下的使用