约瑟夫环
#include <stdio.h>
int main()
{
//使用数组来且元素是0/1来表示人物状态
int table[10];
int i;
for(i=1; i<=8; i++){
table[i] = 1;
}
for(i=1; i<=8; i++){
printf("%-4d", table[i]);
}
printf("\n");
//数组中未退出的人数
int count = 8;
//定义,因为递增所以初始化为零
int index = 0;
int baoshu = 0;
while(count>0){
index++;
baoshu++;
//在下面判断出现之前,会有这种情况出现
while(table[index]==0){
index++;
if(index > 8){
index = 1;
}
}
//第二圈才会出现这个判断
if(baoshu == 3){
table[index] = 0;
printf("%-4d", index);
count--;
baoshu = 0;
}
}
printf("\n");
for(i=1; i<=8; i++){
printf("%-4d", table[i]);
}
return 0;
}
学习到:
- 思路:
- 先执行一圈几次报数
- 到达指定状态,执行相应操作
- 然后循环,直到最后的状态啊
- 编程小技巧
- 用数组下标当做排序
- 用数组元素的值表示状态
- 用递增表示报数
- 有些题无法下手,因为抓手太多,不知从哪里开始
- 就按顺序慢慢走一遍,准备好数据结构,变量代表的意义
- 多次相同操作,就要想到循环
- 同一个数不断变换,新值换旧值,就要想到迭代
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律