1. 程式人生 > >Linuxc基礎 十

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;

}

總結
這兩題是開頭的兩題我感覺很有意思,解題的思路有很多。這兩題我用了很長的時間去想解題的思路,然後再結合網上寫程式的步驟才寫出了這兩題。我感覺我有的時候思路是有了但是不會寫這個程式,這就讓我很煩惱,但經過輔導的建議之後,我覺的明天多打一些程式是必要的。