【C语言】通过数组实现报数

Author:MTingle
人工智能专业
荃者所以在鱼,得鱼而忘荃;蹄者所以在兔,得兔而忘蹄;言者所以在意,得意而忘 言。吾安得夫忘言之人而与之言哉!


[C语言]用数组实现报数报数

在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、库包含

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

二、步骤

1.设置一个数组存储总人数,假设n个人报数,报到m的人出圈,同时用cnt计算一共出局的人数

int a[100] = { 0 };
	int m, n;
	scanf("%d%d", &n, &m);
	int cnt = 0,k=0,i=0;//cnt为目前出局人数,总共有n人,报数到m出局

2.开始报数

while (cnt != n)
	{
		i++;
		if (i > n)i = 1;
		if (a[i] == 0)
		{
			k++;
			if(k==m)
			{
				a[i] = 1;
				cnt++;
				printf("\t%d", i);
				k = 0;//清空k,重新从1开始报数
			}
		}
	}

(注:设置一个循环,cnt++到n时,证明所有的人都报到了m,报数结束,先忽略 i++; 以及 if(i>n)i=1; 两行代码)
1.a[i]=0表示该人还未出局,a[i]=1,则表示该人已经出局
2.因为a[i]=0,证明该人进行报数,并且并不是出局的数字m,则用k++表示顺延到下一个人报数
3.当k=m,证明这个人念到了出局的数字,则将a[i]=0修改为a[i]=1,证明该人出局,cnt++证明出局的人数增加一个,此时我们可以将出局的人的编号i打印出来,同时,我们将k变为0,证明我们从下一个人重新开始报数循环
4.然后我们看到开头那两行代码,i++;和 if(i>n)i=1;就并不难理解这个做法:
因为我们报数的人的编号一直在增加,为了防止报数的人的编号i大于n,我们就要设置这么一个语句

下面是整个程序的代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	int a[100] = { 0 };
	int m, n;
	scanf("%d%d", &n, &m);
	int cnt = 0,k=0,i=0;//cnt为目前出局人数,总共有n人,报数到m出局
	while (cnt != n)
	{
		i++;
		if (i > n)i = 1;
		if (a[i] == 0)
		{
			k++;
			if(k==m)
			{
				a[i] = 1;
				cnt++;
				printf("\t%d", i);
				k = 0;//清空k,重新从1开始报数
			}
		}
	}
	return 0;
}

//希望这篇文章可以帮助到大家

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值