100个经典的C算法

1.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔

子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数

为多少?

#include<stdio.h>
#include<stdlib.h>
int functionsum(int n)
{
if(n==1||n==2)return 1;
else
return functionsum(n-2)+functionsum(n-1);
}
void main()
{
int n;
printf("题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少\n");
printf("please input month num=\n");
scanf("%d",&n);
printf("\n totle=%d\n",functionsum(n));
}

2.判断101-200之间有多少个素数,并输出所有素数。

#include<stdio.h>
#include<stdlib.h>

void functionOther(int n,int m)
{
int i,j;
int sum=0;
for(i=n;i<=m;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
{
break;
}
else
{
if(j==i-1)
{
sum+=1;
printf("the %d is%d \t",sum,i);
}
continue;
}

}

}

}

void main()
{
 int n,m;
 scanf("%d %d",&n,&m);
 functionOther(n,m);


}

 

3.

题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位

数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方

+5的三次方+3的三次方。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int reGeWei(int n)
{
int s=n%10;
return s*s*s;
}

int reShiWei(int n)
{
int s=(n/10)%10;
return s*s*s;
}
int reBaiWei(int n)
{
int s=n/100;
return s*s*s;
}
void functionOther()
{
int i,j;
for(i=101;i<1000;i++)
{
int sum=reGeWei(i)+reShiWei(i)+reBaiWei(i);
if(sum==i)
{
printf("%d is shuixianhua shu\n",i);
}
}

}

 

void main()
{
functionOther();

}

 

4.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

#include<stdio.h>
#include<stdlib.h>

void functionOther(int n,int i)
{


if(n%i==0)
{
printf("%d",i);
if(n/i>1)
{
printf("*");
}

functionOther(n/i,i);
}
else
{
functionOther(n,i+1);
}

 


}

void main()
{
int n;
scanf("%d",&n);

printf("%d=",n);
functionOther(n,2);
}

 

5.题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

#include<stdio.h>
#include<stdlib.h>
int functionOther(int n,int m)
{
int min=n<m?n:m;
int max=n>m?n:m;
int temp;
while(max%min!=0)
{
temp=min;
min=max%min;
max=temp;
if(max<min)
{
temp=max;
max=min;
min=temp;
}
printf("min=%d,max=%d",min,max);
}
return min;
}

void main()
{
int n,m;
scanf("%d %d",&n,&m);
printf("the max gongyueshu is %d\n",functionOther(n,m));
printf("the min gongbeishu is %d\n",n*m/functionOther(n,m));

}

6.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

#include<stdio.h>
#include<stdlib.h>

 

void main()
{
char c;
int alpnum=0,space=0,otherchar=0;
while((c=getchar())!=‘\n‘)//主要是学习了这个字符串输入方式
{
if(c>=‘a‘&&c<=‘z‘||c>=‘A‘&&c<=‘Z‘)
{
alpnum++;
}
else if(c==‘ ‘)
{
space++;
}
else
{
otherchar++;
}
}
printf("alpnum=%d,space=%d,otherchar=%d",alpnum,space,otherchar);

}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。