题目16
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
/*一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。*/
#include<stdio.h>
int main(){
int i;
int n,sum=0;
printf("找到的完数有:\n");
for(i=1;i<1000;i++){
for(n=1;n<i;n++){
if(i%n == 0){
sum = sum+n;
}
}
if(sum == i){
printf("%d\t",i);
sum = 0;
}
else{
sum = 0;
}
}
return 0;
}
题目17
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
/*一球从100米高度自由落下,
每次落地后反跳回原高度的一半;
再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?*/
#include<stdio.h>
int main(){
float h = 100; //初始高度
float sum = 0; //路程
float l = h;
int num; //弹跳次数
printf("请输入弹跳次数: ");
scanf("%d",&num);
int i;
for(i=1;i<num;i++){
l = l/2;
sum = 2*l + sum;
}
sum = sum + h;
printf("第%d次落地时,共经过%f米,第%d次反弹会高%f米\n",num,sum,num,l/2);
return 0;
}
题目18
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
/*猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,
还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,
又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。*/
#include<stdio.h>
int main(){
int day; //天数
printf("请问是几天前:");
scanf("%d",&day);
int x1,x2; //x1 是当天的,x2 是下一天的桃子数量
// 因为 x2 = x1/2 + 1;
// 所以 x1 = (x2+1)*2;
x2 = 1; //当前有的数量
int i;
for(i=1;i<day;i++){
x1 = (x2+1)*2;
x2 = x1;
}
printf("\n%d天前有%d个桃子\n",day,x1);
return 0;
}
题目19
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前n项之和
/*有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前n项之和*/
#include<stdio.h>
int main(){
float a=2,b=1;
float sum = 0;
int num;
printf("需要求前几项之和?\n");
scanf("%d",&num);
int i,c;
for(i=0;i<num;i++){
sum = sum + a/b;
c = a+b;
b = a;
a = c;
}
printf("\n前%d项之和等于:%f \n",num,sum);
return 0;
}
题目20
求1+2!+3!+...+n!的和。
/*求1+2!+3!+...+n!的和。*/
#include<stdio.h>
int main(){
int num;
printf("1+2!+3!+...+n! 需要求前几项之和?\n");
scanf("%d",&num);
int i,j;
double c = 1;
double sum = 0;
for(i=1;i<=num;i++){
for(j=1;j<=i;j++){
c = c*j;
}
sum = sum + c;
c = 1;
}
printf("\n求得结果为:%lf",sum);
return 0;
}