写程序好难-ˉ-.....很简单的程序让我写这么复杂

本文通过C语言实现了一个简单的报数游戏算法,游戏规则为n个人围成一圈按顺序报数,每报到3的人退出,直至最后剩下一人。文章提供了一种虽冗长但清晰的实现方式,并表达了优化的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
提示:用数组完成
1 #include<stdio.h>
  2 main()
  3 {
  4     int num_input;
  5     int a[1000];
  6     int count;
  7     int num=1;
  8     int jishu=0;
  9     printf("please input a number");
 10     scanf("%d",&num_input);
 11     for(count=1;count<=num_input;count++)
 12     {
 13     a[count]=count;
 14     }
 15     while(1)
 16     {
 17     while(!a[num])
 18     {
 19     num++;
 20     if(num>num_input)
 21     {
 22     num=1;
 23     }
24     }
 25     num++;
 26     if(num>num_input)
 27     {num=1;}
 28     while(!a[num])
 29     {
 30     num++;
 31     if(num>num_input)
 32    {
 33    num=1;
 34    }
 35     }
 36     num++;
 37     if(num>num_input)
 38     {
 39     num=1;
 40     }
 41     while(!a[num])
 42     {
 43     num++;
 44     if(num>num_input)
 45     {
 46     num=1;
47     }
 48     }
 49     a[num]=0;
 50     jishu++;
 51     while(!a[num])
 52     {
 53     num++;
 54     if(num>num_input)
 55     {num=1;}}
 56     if(jishu==num_input-1)
 57     break;
 58     }
 59     printf("%d",num);
 60 }
虽然实现了功能,但是代码太繁琐了。。。百度上的算法比较简单,但是之前想不到
等下还要按照华为的要求进行规范化处理-ˉ-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值