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; }
不为失败找原因,要为成功找方法!