2016.3.7 16.14复习篇之三(蓝桥杯恶补)

题目1:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程

   找出1000以内的所有完数。

#include<stdio.h>
int main()
{
         int i,j,k,sum;
for(i=1;i<1000;i++)
         {
                   sum=0;      
                   for(j=1;j<=i/2;j++)//最大的因子就是此数的一半
                   if(i%j==0)
                   {
                            sum=sum+j;
                           
                   }
         if(sum==i)/*这个判断很重要,本人就犯错误了之前,就是24 也是了,就是没有完成所有因子sum,就判断i= =sum ?然后就出错了,题目要求的是所有的因子!!*/
                                     {
                                     printf("%d是完数",i);
                                     for(j=1;j<=i/2;j++)//这段程序用来输出因子,比赛时可以不输出,除非要求
                                               if(i%j==0)
                                               {
                                               printf("%5d",j);
                                               }
                                               printf("\n");
                                     }
         }
         return 0;
}


题目2:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在

   第10次落地时,共经过多少米?第10次反弹多高?

#include<stdio.h>
#define max 10
int main()
{
       floathigh,newhigh,num,sum;
       scanf("%f",&high);
       sum=high;num=1;
       for(num=1;num<max;num++)
       {
              newhigh=high/2;
              high=high/2;
              sum+=newhigh*2;
              printf("%f\n",sum);
       }
       return0;
}


#include<stdio.h>
main()
{
         float sn=100.0,hn=sn/2;
        
         int n;
         for(n=2;n<=10;n++)
         {
                   sn=sn+2*hn;
                   hn=hn/2;
         }
printf("thetotal of road is %f\n",sn);
printf("thetenth is %f meter\n",hn);        
return0;
}


#include<stdio.h>
#define max 10
int main()
{
         float high,newhigh,sum;
         int num;
         scanf("%f",&high);
         sum=high;
         for(num=0;num<max;num++)
         {
                   newhigh=high/2;
                   high=high/2;
                   sum+=newhigh*2;
                   printf("第%d次高度%f\t总高度%f\n",num+1,high,sum);
         }
         return 0;
}


最终版:

#include<stdio.h>
#define max 10
int main()
{
         float high,newhigh,sum;
         int num;
//       printf("输入初始高度\n");
         scanf("%f",&high);
         sum=high;
         for(num=0;num<max;num++)
         {
                   newhigh=high/2;
                   high=high/2;
                   sum+=newhigh*2;
                   printf("%f,%f\n",high,sum);
                   //printf("第%d次高度%f\t总高度%f\n",num+1,high,sum);
         }
         return 0;
}


题目3:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个

   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

#include<stdio.h>
#define max 10
int main()
{
        
         int i,j;
         i=1;
for(j=1;j<=10;j++)
{
         i=((i+1)*2);
}
printf("%d",i);
         return 0;
}


posted @ 2016-03-07 16:10  Joe.Smith  阅读(260)  评论(0编辑  收藏  举报