C语言高手来

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:45:29
1,计算两整数最小公倍数(用嵌套法)
2,用递归法求n!,n由键盘输入
n!=n*(n-1)*(n-2)*.....*1=n*(n-1)!
递归公式
1 0,1
n!{
n*(n-1)! 其他
3,定义带参数的宏,使用两个参数的值按照从小到大排序

第一个题目没听过嵌套法,我听过的最好的方法是辗转相除法先求最大公约数,再求最小公倍数,如下:

#include <stdio.h>
#include <conio.h>
int main()
{
int min,max;
int temp;
int saveData[2];
scanf("%d %d",&min,&max);
saveData[0]=min,saveData[1]=max; /*保存输入的两个数,以在求最小公倍数用*/
if(max<min) /*使得max中存放较大的数,min存放较小的数*/
{
temp=min;
min=max;
max=temp;
}

while(max%min!=0)
{
temp=min;
min=max%min;
max=temp;
}
printf("最大公约数:%d\n",min);
printf("最小公倍数:%d\n",saveData[0]*saveData[1]/min);
getch();
}

本题输出最大公约数和最小公倍数,两个有一个关系,比如M,N的最大公约数为A,最小公倍数为B,则有A*B=M*N,只要求出一个,另一个就可以用这个公式求了

2.
long fun(int n)
{
if(n==1||n==0) return 1;
return n*fun(n-1);
}

3.同楼上,采用位运算,效率最高

#define SWAP(x,y) if(