Linuxc基础 十

今天做了老师给的题目有几道题很有意思。
代码

代码题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.

void quanzi(int *pa,int n)
{
	int i,b=0,c;
	c=n;
	for(i=0;i<n;i++)
	{
		pa[i]=i+1;
	}
	for(i=0;;i++)
	{
		if(i==n)
			i=0;
		if(pa[i]!=0)
			b++;
		else
			continue;
		if(b%3==0)
		{
			pa[i]=0;
			c--;
		}
		if(c==1)
			break;
	}
	for(i=0;i<n;i++)
	{
		if(pa[i]!=0)
			printf("%d\n",pa[i]);
	}
		
	

}
int main2()
{
	
	int a[100];
	int n;
	printf("qing shu ru: ");
	scanf("%d",&n);
	
	quanzi(a,n);
}

代码题目:一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数

void yinzi(int n,int i)
{
	int sum;
	for(n=2;n<1000;n++)
	{
		sum=1;
		for(i=2;i<n;i++)
		{
			if(n%i==0)
			{
				sum+=i;
			}
			
		}
		if(sum==n)
		{
			printf("%d its factors are: ",n);
		
			for(i=1;i<n;i++)
			{
				if(n%i==0)
				{
					printf("%d",i);
				}	
			}
			printf("\n");
		}
		
	}

}

int main1()
{
	int n;
	int i;
	yinzi(n,i);
	return 0;

}

总结
这两题是开头的两题我感觉很有意思,解题的思路有很多。这两题我用了很长的时间去想解题的思路,然后再结合网上写程序的步骤才写出了这两题。我感觉我有的时候思路是有了但是不会写这个程序,这就让我很烦恼,但经过辅导的建议之后,我觉的明天多打一些程序是必要的。

猜你喜欢

转载自blog.csdn.net/qq_41936758/article/details/84404749