C语言经典例69-有n个人围成一圈报数问题
生活随笔
收集整理的這篇文章主要介紹了
C语言经典例69-有n个人围成一圈报数问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
- 1 題目
- 2 分析
- 3 實現(xiàn)
- 4 運行結(jié)果
1 題目
有n個人圍成一圈,順序排號。從第一個人開始報數(shù)(從1到3報數(shù)),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。
2 分析
假設(shè)全部人都退圈,則最后一個退圈的人就是題目中留下的那一位,詳細(xì)思路請見實現(xiàn)中的注釋。
3 實現(xiàn)
#include <stdio.h>int main() {int a[100]; // 保存人數(shù)的數(shù)組int n; // 用戶輸入初始有多少人int i; // 循環(huán)控制變量int k = 0; // 統(tǒng)計一共有多少人退圈,初始為0int count = 0; // 每輪報號累加數(shù)int lastone; // 記錄每輪退圈的人的號碼printf("請輸入人數(shù):");scanf("%d", &n); //n為人數(shù)//對于每個人a[i], 他的編號實際上是i+1for (i = 0; i < n; i++) {// i表示人的狀態(tài),若a[i]=1,則表示i+1號在圈內(nèi)// 若a[i]=0,則表示i+1號在圈外,初始所有人都在圈內(nèi)a[i] = 1;}// 當(dāng)所有人都退出圈子時停止循環(huán)// 最后退圈的人就是題中有一個留在圈內(nèi)的那個人while (k < n) {//對所有編號開始循環(huán)for (i = 0; i < n; i++) {//判斷i+1號是否在圈內(nèi)if (a[i] == 1) {//若在圈內(nèi),則報號count++; //判斷號碼是否為3的倍數(shù)if (count % 3 == 0) {a[i] = 0; //若是3的倍數(shù),則a[i]出圈k++; //退圈人數(shù)+1lastone = i + 1; //記錄此時退圈人的號碼}}}}//將最后退圈的人的號碼輸出printf("留下來的那個是%d號\n", lastone); }4 運行結(jié)果
PS E:\C++WorkSpace> cd "e:\C++WorkSpace\" ; if ($?) { g++ FFF.cpp -o FFF } ; if ($?) { .\FFF } 請輸入人數(shù):8 留下來的那個是7號 PS E:\C++WorkSpace> cd "e:\C++WorkSpace\" ; if ($?) { g++ FFF.cpp -o FFF } ; if ($?) { .\FFF } 請輸入人數(shù):20 留下來的那個是20號 PS E:\C++WorkSpace> cd "e:\C++WorkSpace\" ; if ($?) { g++ FFF.cpp -o FFF } ; if ($?) { .\FFF } 請輸入人數(shù):17 留下來的那個是11號總結(jié)
以上是生活随笔為你收集整理的C语言经典例69-有n个人围成一圈报数问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言经典例68-数组元素循环偏移
- 下一篇: C语言经典例71-编写函数输出结构体数据