1. 程式人生 > >第3次作業後來加的作業 2018-10-26 迴圈2

第3次作業後來加的作業 2018-10-26 迴圈2

第3次作業後來加的作業
2018-10-26

以下內容僅供娛樂,歡迎隨時探討,請多指教!
後來加的作業:
利用迴圈巢狀完成下列各題:
1、求出100以內的素數。

#include"stdio.h"
#include"math.h"
int main()
{
	int i,k,t=0; 
	printf("1\t");
	for(i=2;i <= 100;i++)
	{
		for(k=2;k <= sqrt(i);k++)
		{
			if(i%k == 0)t=1;
		}
		if(0 == t)printf("%d\t",i);
		t=0;
	}
    return 0;
}

2、列印形狀為正方形和直角三角形(上三角和下三角)的乘法九九表。
正方形

#include"stdio.h"
int main()
{
	int i,k; 
	for(i=1;i < 10;i++)
	{
		for(k=1;k <10;k++)
		{
			printf("%d*%d=%-3d",i,k,i*k);
		}
		printf("\n");
	}
    return 0;
}

上三角

#include"stdio.h"
int main()
{
	int i,k;
	// 控制行 
	for(i=1;i < 10;i++)
	{//控制列 
		for
(k=1;k <= 10-i;k++) { printf("%d*%d=%-3d",k,i,i*k); } printf("\n"); } return 0; }

下三角

#include"stdio.h"
int main()
{
	int i,k;
	// 控制行 
	for(i=10;i > 0;i--)
	{//控制列 
		for(k=1;k <= 10-i;k++)
		{
			printf("%d*%d=%-3d",k,i,i*k);
		}
		printf("\n");
	}
    return 0;
}

3、將一筆零錢(大於8分,小於1元,精確到分)換算成1分、2分和5分的硬幣組合。輸入金額,輸出共有多少種換法及換算的方案。

#include"stdio.h"
int main()
{
int a,b,c,money,count=0;
printf("input money(精確到分 角分)\n");
scanf("%d",&money);
if(money<8 || money>99)
printf("wrong input!\n"); 
else
{
	for(a=0;a <= 100;a++)
	for(b=0;b <= 100;b++)
	for(c=0;c <= 100;c++)
	{
		if(a+2*b+5*c == money)
		{
			printf("%d分=%2d個1分+%2d個2分+%2d個5分\n"
			,money,a,b,c);
			count++;
		}
	}
	printf("\n共有%d種換法\n",count);
}
return 0;
}

4、百馬百擔問題。有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔。編寫程式求需大、中、小馬各多少匹。

#include"stdio.h"
int main()
{
	int a,b,c,count=0;
	for(a=0;a <= 100;a++)
	for(b=0;b <= 100;b++)
	for(c=0;c <= 100;c++)
	{
		if(200 == 6*a+4*b+c)
		{
			printf("大馬%2d中馬%2d小馬%2d\n"
			,a,b,c);count++;
		}
	}
	printf("有%d種\n",count);
	return 0;
}

5、輸入一個正整數,質因數分解。例如:輸入18,輸出18=233.

#include"stdio.h"
int main()
{
    int n,i;
    printf("請輸入整數\n");
    scanf("%d",&n);
    printf("%d=",n);
    for(i=2;i <= n;i++)
    {// 從小開始分解,開始都為質數
        while(n%i == 0)
        {
            printf("%d",i);
            n/=i;
            if(n!=1) printf("*");
        }
    }
    printf("\n");
    return 0;
}

7、有一個數學等式:AB**CD=BA*DC,式中的一個字母代表一位數字,試找出所有符合上述要求的乘積式並列印輸出。

#include"stdio.h"
int main()
{
   int i,j,m,n;
   for(i=10;i<100;i++)
   {
   	for(j=10;j<100;j++)
   	{
   		m=(i%10)*10+i/10;n=(j%10)*10+j/10;
   		if(i*j == m*n)
   		printf("%d*%d=%d*%d\n",i,j,m,n);
	}
	}
   return 0;
}

8、有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?

#include"stdio.h"
int main()
{
	int i,j,k;
	//以下為三重迴圈
	for(i=1;i<5;i++) 
	for(j=1;j<5;j++)
	for (k=1;k<5;k++)
	{
	if (i!=k&&i!=j&&j!=k) //確保i、j、k三位互不相同
	printf("%d%d%d\n",i,j,k);
	}
    return 0;
}

9、一個數如果恰好等於它的因子(包括1,但不包括這個數本身)之和,這個數就稱為完數。求100之內的所有完數。

#include"stdio.h"
int main()
{
int i,k,sum=0;
printf("1\n");
for(i=1;i < 101;i++)
{
	for(k=1;k < i;k++)
	{
		if(i%k == 0)
		{
			sum+=k;
		}
	}
	if(sum == i)printf("%d\n",i);
	sum=0;
} 
    return 0;
}

10、列印下列圖案,注意行數是任意的,可以由使用者輸入行數n

   *
  ***
 *****
*******
 *****
  ***
   *

程式碼

#include "stdio.h"
#include "math.h"
int main()
{
    int n,i,j,k,t;
    printf("input ")
    scanf("%d",&n);
    if(n%2==0) n-=1,t=2;
    for(i=-n/2;i<=n/2;i++)
    {
        for(j=1;j<=abs(i);j++) printf(" ");
        for(k=1;k<=n-abs(i)*2;k++) printf("*");
        if(i==0&&2==t)
        {
            printf("\n");
            for(k=1;k<=n-abs(i)*2;k++)
            printf("*");
        }
        for(j=1;j<=abs(i);j++) printf(" ");
        printf("\n");
    }
}