古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21….
/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21....*/
#include
int f (int n)
{
if(n==1||n==2)
return 1;
if( n > 2 )
return f (n-1) + f (n-2);
}
int main()
{
int i = 0,n;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
printf("%d ",f (i));
if(i%5==0)
{
printf("\n");
}
}
return 0;
}
判断素数
/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。*/
#include
#include
void main()
{
int i,j,flag,m,count=0;
for(i=101;i<200;i=i+2)//偶数不可能是素数。
{
flag=0;
m=sqrt(i);//减少计算次数。
for(j=2;j<=m;j++)
if(i%j==0)
{
flag=1;
break;
}
if(flag==0)
{
count++;//用来计数的。
printf("%d ",i);
}
}
printf("\n素数的个数为%d\n",count);
}
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
找出100以内的所有完数。
#include
int main()
{
int i, j, sum;
/*
第一个循环,检查从1到1000中的每一个数字是不是完数
如果是完数,输出完数和它所有的因子
*/
for( i = 1; i <= 100; ++i )
{
/*
检查该数字是否是完数
方法:从1到i-1,依次取余,余数为0,说明是它的公约数,
累加公约数,最后的值如果等于i,这说明i就是完数。
*/
sum = 0;
for( j = 1; j < i; ++j )
{
if( i%j == 0 )
{
sum += j;
}
}
if( sum == i )
{
printf( "完数是:%d,它的因子是:", i );
/*
这个for循环是将其所有因子取出
和第22行的for循环思路是一样的
*/
for( j = 1; j < i; ++j )
{
if( i%j == 0 )
{
printf( "%d ", j );
}
}
printf( "\n" );
}
}
return 0;
}
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
#include
int main()
{
int num,reward;//num是利润,reward是奖金总数
scanf("%d",&num);
int reward1=100000*0.1;
int reward2=reward1+100000*0.075;
int reward3=reward2+200000*0.05;
int reward4=reward3+200000*0.03;
int reward5=reward4+400000*0.15;
if(num<=100000)
reward=num*0.1;
else if(num<=200000)
reward=reward1+(num-100000)*0.075;
else if(num<=400000)
reward=reward2+(num-200000)*0.05;
else if(num<=600000)
reward=reward3+(num-400000)*0.03;
else if(num<=1000000)
reward=reward4+(num-400000)*0.015;
else
reward=reward5+(num-1000000)*0.01;
printf("%d\n",reward);
return 0;
}
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
#include
#include
int main()
{
int num;
int x,y;
for(num=1;num<100000;num++)
{
x=sqrt(num+100);
y=sqrt(num+268);
if(x*x==num+100&&y*y==num+268)
printf("%d\n",num);
}
return 0;
}
输入某年某月某日,判断该天是该年的第几天。
#include
int main()
{
int day,month,year;
int days=0;
int leap;
scanf("%d%d%d",&year,&month,&day);
switch(month)
{
case 1:days=0;break;
case 2:days=31;break;
case 3:days=59;break;
case 4:days=90;break;
case 5:days=120;break;
case 6:days=151;break;
case 7:days=181;break;
case 8:days=212;break;
case 9:days=243;break;
case 10:days=273;break;
case 11:days=304;break;
case 12:days=334;break;
default:printf("输入错误!");break;
}
days=days+day;
if((year%4==0||year%100!=0)&&(year%400==0))
{
leap=1;
}
else
leap=0;
if(leap==1&&month>2)
days=days+1;
printf("%d年%d月%d日有%d天",year,month,day,days);
return 0;
}