1. 程式人生 > >2018.10.25 第3次作業 迴圈1

2018.10.25 第3次作業 迴圈1

2018.10.25 第3次作業
以下內容僅供娛樂,歡迎隨時探討,請多指教!
附加題:1.今有一對兔子,當他們長到第三個月時具有生育能力,從此每月必生一對小兔子,小兔子也和他的父母一樣,問第20個月有多少兔子?

#include"stdio.h"
int main()
{
    int month,a=1,b=1,c=2,i;
    printf("input month\n");
    scanf("%d",&month);
    if(month < 3)
        printf("%d",a);
    else{
    for(i=3 ; i <=
month; i++) { a=b,b=c,c=b+a; } printf("%d\n",c); } return 0; }

2.今有一隻小牛,當他第四年時具有生育能力,從此每年必生一頭小牛,他的小牛跟他一樣,問第20年有多少頭牛?

#include"stdio.h"
int main()
{
    int year,a=1,b=1,c=1,d=2,i;
    printf("input year\n");
    scanf("%d",&year);
    if(year < 4)
        printf
("%d",a); else{ for(i=3 ; i <= year; i++) { a=b,b=c,c=d,d=c+a; } printf("%d",d); } return 0; }

這是正式的題目:

1、輸入一個數n,求出n!。

#include"stdio.h"
int main()
{
    int n,i,s=1;
    printf("輸入一個數n\n");
    scanf("%d",&n);
    for(i=1 ; i <= n ; i++)
    {
s*=i; } printf("%d\n",s); return 0; }

2、求
在這裡插入圖片描述

#include"stdio.h"
int main()
{
   int i,n,s=1,sum=0;
   //求5次n!總和
   for(n=1 ;n <= 5;n ++)
   {	
   	//求n!
       for(i=1 ; i <= n; i++)
           {
               s*=i;
           }
       sum+=s;s=1;
   }
   printf("%d\n",sum);
   return 0;
}

3、求
在這裡插入圖片描述

#include"stdio.h"
int main()
{
    int i,k,s1=0,s2=0,sum=0;
    //求n的和
    for(i=1;i <= 10;i++)
    {
        s1+=i;
    }
    //求n*n的和
    for(k=1;k < 10+1;k++)
    {
         s2+=k*k;
    }
    sum=s1+s2;
    printf("%d",sum);
    return 0;
}

4、從鍵盤上輸入一個整數,逆序輸出各個位數上的數字。

#include"stdio.h"
int main()
{
    int n,number;
    printf("input number!\n");
    scanf("%d",&number);
    if(0 == number)
        printf("0\n");
    else{
        while(number != 0)
        {	//分解輸出
            n=number%10;
            number/=10;
            printf("%d  ",n);
        }
    }
    return 0;
}

5、編寫程式,輸出能被7整除且個位數為1的三位數,並統計其個數。(要求採用continue語句和不用continue語句的兩種解法)
不用continue語句

#include"stdio.h"
int main()
{
    int i,count=0;
    for(i=1000;i < 10000;i++)
    {
        if(i%7 == 0 &&  i%10 == 1)
        {
            count++;
            printf("%d\n",i);
        }
    }
    printf("\n個數是%d\n",count);
    return 0;
}

用continue語句

#include"stdio.h"
int main()
{
	int i,count=0;
	for(i=1000;i < 10000;i++)
	{
		if(i%7 == 0 && i%10 == 1);
		else continue;
		printf("%d\n",i);
		count++;
	}
	printf("\n個數是%d\n",count);
	return 0;
}

6、從500開始,求被3、5、7除餘數均為2的前50個數。

#include"stdio.h"
int main()
{
    int i,count=0;
    for(i=500; ;i++)
    {
        if(i%7 == 2 && i%3 == 2 && i%5 == 2)
        {
            count++;
            printf("%d\n",i);
            if(count == 50)break;
        }
    }
    return 0;
}

7、輸入一個數,判斷是否為素數。(只能被1和自身整除的數)

#include"math.h"
#include"stdio.h"
int main()
{
    int n,i,t=0;
    printf("input n\n");
    scanf("%d",&n);
    if(n < 4) printf("no\n");
    else
	 {
	    for(i=2;i <= sqrt(n);i++)
	    {
	    	if(n%i == 0) t=1;
    	}
		if(1 == t) printf("no\n");
		else printf("yes\n");
	}
    return 0;
}

8、編寫程式,輸入兩個正整數,求出他們的最大公約數和最小公倍數(輾轉相除法和窮舉法兩種)。
窮舉法

#include"stdio.h"
int main()
{
    int i,n1,n2;
    printf("input two numbers\n");
    scanf("%d%d",&n1,&n2);
    for(i=n1;i > 1;i--)
    {
        if(n1%i == 0 && n2%i == 0)
        {
            printf("最大公約數是%d\n",i);
            break;
        }
    }
    printf("最小公倍數是%d\n",n1*n2/i);
    return 0;
}

輾轉相除法

#include"stdio.h"
int main()
{
    int n1,n2,a,b,c;
    printf("input two numbers\n");
    scanf("%d%d",&n1,&n2);
    a=n1,b=n2;
    if(a < b)c=a,a=b,b=c;
    //輾轉相除法
    while(b != 0)
    {
        a=a%b,b=b%a;
    }
    printf("最大公約數是%d\n",a);
    printf("最小公倍數是%d\n",n1*n2/a);
    return 0;
}

9、輸入一批正整數,求出其最大值,輸入以0結束。

#include"stdio.h"
int main()
{
    int n,t;
    printf("input numbers\n");
    scanf("%d",&n);
    if(0 == n)printf("0\n");
    else
    {
        t=n;
        while(n != 0)
        {
            scanf("%d",&n);
            t=(n>t?n:t);
        }
    }
    printf("max=%d\n",t);
    return 0;
}

10、有一數列:2/1,3/2,5/3,8/5,…求出這個數列的前10項之和。

#include"stdio.h"
int main()
{
    int i;
    double a1=1,a2=2,a3,b1=2,b2=3,b3,sum=0;
    sum=b1/a1+b2/a2;
    for(i=3;i<=10;i++)
    {
        a3=a1+a2,a1=a2,a2=a3;
        b3=b1+b2,b1=b2,b2=b3;
        sum+=b3/a3;
    }
    printf("sum=%.2lf\n",sum);
    return 0;
}

11、列印500以內的“水仙花數”。“水仙花數”是一個三位數,其各位數立方和等於該數本身。

#include"stdio.h"
#include"math.h"
int main()
{
    int i,s=0,t;
    for(i=100;i <= 500 ;i++)
    {
        t=i;
        while(t>0)
        {
            s+=pow(t%10,3);t/=10;
        }
        if(s == i)
            printf("%d\n",i);
        s=0;
    }
    return 0;
}