文章

5

粉丝

87

获赞

16

访问

1.1k

头像
击鼓传花 题解:(C语言、用数组解决)
P1018 贵州大学机试题
发布于2025年3月14日 15:32
阅读数 301

#include<stdio.h>
int main()
{  int a[101];
   int n,count=0,shanchu=0;
   scanf("%d",&n);
   for(int i=0;i<n;i++)       /*对a[0]~a[n-1]赋值1~n,代表n个人的序号*/
     a[i]=i+1;
   for(int i=0;;i=(i+1)%n)    /*对数组循环遍历,重点在于i=(i+1)%n,0=<i<=n-1,循环遍历a[0]~a[n-1]*/
   { if(a[i]!=0) count+=1;            /*如果元素不为零,代表此人还在场,count+1 */
	 if(count==3)  {a[i]=0;count=0;shanchu+=1;}  /*当count=3时,代表数了3个人,把a[i]置0,代表此人出局。 
                                               count=0,从下一个人开始重新数3人。shanchu++,出局人数+1。 */
	 if(shanchu==n-1) break;                   /*当shanchu=n-1,代表只剩一人了,退出遍历*/
   }
  int b=0;
  for(int i=0;i<n;i++)            /* 此时数组只有一个元素不为0,通过求数组和即可知元素大小,即人的序号 */
	   b+=a[i];
  printf("%d",b );
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发