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;
}

猜你喜欢

转载自blog.csdn.net/weixin_43310774/article/details/83374155