每日5题之8.7

1..问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....(斐波那契数列)

2.程序源代码:

 

#include<stdio.h>

Voidmain()

{

longf1,f2;

inti;

f1=f2=1;

for(i=1;i<=20;i++)

  { printf("ld ld",f1,f2);

    if(i%2==0) printf("\n");//分两行打印

 

    f1=f1+f2;

    f2=f1+f2;//前两个数相加等于后面那个数

  }

}

 

2.大小可变的菱形图案

#include<stdio.h>

#include<stdlib.h>

voidmain()

{

 int i,j,k,m,n,size;

printf("input size:");

scanf("%d",size);//输入你想要的菱形的大小,即行数

if(size<=0||size%2==0)

{

printf("the size is error!\n");

exit(-1);//不成菱形

}

for(i=1;i<=size;i++)

{

   n=(i<=(size+1)/2)?i:size-i+1;//如果打印前半行,那么n=i;否则n=size-i+1;

   n=2*n-1;//

   m=(size-n)/2+15;//菱形规律

   for(k=1;k<=m;k++)

      printf(" ");//打印空格和打印*结合起来。

   for(j=1;j<=n;j++)

      printf("*");

   printf("\n");

 

}

}

 

3.编程将递增数列10,20,30,40,50,60,70,80,90,100保存到数组中,再从键盘输入一个整数,将它插入到数列中,使之仍为一个递增数列。

#include<stdio.h>
void main(){
int a[11]={10,20,30,40,50,60,70,80,90,100};
int b,i,p=10;
printf("请输入要插入的数\n");
scanf("%d",&b);//初始化
for(i=0;i<10;i++){
if(b<a[i]){
  p=i;
  break;
}//输入的数和10个数分别比较,然后把插入位置找出来。

}

for(i=9;i>=p;i--){
   a[i+1]=a[i];
}
a[p]=b;//把b插入到原数组中


for(i=0;i<11;i++){
   printf("%d\t",a[i]);
}//重新打印这个新数组

printf("\n");//
}

4.下面程序的功能是计算1-3+5-7+ …… -99+101的值。

main()

{int i,t=1,s=0;

for(i=1;i<=101;i+=2)

{ t=t*i;//t就是用来调节正负号的。后边的t/i和这里的t*i相互抵消。、、

 s=s+t;//

t=t/i*(-1);

}

printf("%d\n",s);

}

 

5.两个正整数m和n,求其最大公约数和最小公倍数. 

main() 

{longm,n,i=1,j,s; 

scanf("%ld,%ld",&m,&n); 

for(;i<=m&&i<=n;i++) 

{if(m%i==0&&n%i==0)s=i;} 

if(m>=n)j=m; 

elsej=n; 

for(;!(j%m==0&&j%n==0);j++); //从最大的那个数开始向上自加,直到找到可以同时除以m和n的数之后才跳出循环。

printf("s=%ld,j=%ld\n",s,j); 

 

 

#include<stdio.h>

void main()

{

    inta,b,m,c,t;

   printf("请输入两个数:");

   scanf("%d,%d",&a,&b);

   if(a<b)

   {

      t=a;

      a=b;

      b=t;

   }

   m=a*b;

   c=a%b;

   while(c!=0)//辗转相除法

   {

      a=b;

      b=c;

      c=a%b;

   }

   printf("最大公约数是%d:",b);

   printf("最小公倍数是%d:",m/b);

 

}

 

 

转载于:https://my.oschina.net/shengmingqijiquan/blog/663033

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值