1.编写求两个整数的绝对值,和与差的函数。
#include<stdio.h>
#include<math.h>
int add(int c,int d){
return c+d;
}
int sub(int x,int y) //相减函数
{
if(x>=y)
return x-y;
else
return y-x;
}
int main()
{
int a,b;
int sum,minus;
printf("Input two integers please:");
scanf("%d%d",&a,&b);
a=abs(a); //求绝对值
b=abs(b);
sum=add(a,b); //调用求和函数
minus=sub(a,b);//调用求差函数
printf("%d\n",sum);
printf("%d\n",minus);
}
2.编写一个计算f(x)=x的n次方的递归程序。
#include<stdio.h>
long int f(int x,int n)
{
if(n==1) return x;
return x*f(x,n-1);
}
int main()
{
int x,n;
printf("Enter x,n please:");
scanf("%d%d",&x,&n);
printf("%ld",f(x,n));
}
类似的,求某数的阶乘一样可按类似方法编写代码
#include<stdio.h>
int F(int n)
{
if(n==1)
return n;
return n*F(n-1);
}
int main()
{
int n;
printf("please input n:");
scanf("%d",&n);
printf("%d",F(n));
}
3.已知三角形的3条边,求三角形的面积。
#include<stdio.h>
#include<math.h> //涉及开方函数 ,故要使用math.h文件
float area(float a,float b,float c)
{
float p,area;
p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c)); //海伦公式
return area;
}
int main()
{
float a,b,c,mianji;
printf("please input three number:");
scanf("%f%f%f",&a,&b,&c);
if((a>0)&&(b>0)&&(c>0)&&(a+b>c)&&(a+c>b)&&(b+c>a)){
mianji=area(a,b,c);
printf("area=%f",mianji);
}
else
printf("Data error!");
}
4. 求两个整数的最大公约数。
如果a>b,如果a能被b整除,最大公约数就是b。如果a除b的余数为c,则继续用b除c,如此反复,直到余数为0,则最后一个非0除数就是a、b的最大公约数。
解法一:
#include<stdio.h>
int gys(int a,int b)
{
if(a%b == 0)
return b;
else
return gys(b,a%b); //辗转相除法
}
int main()
{
int x,y;
int result;
printf("输入两个整数:");
scanf("%d%d",&x,&y);
if(x>y)
result = gys(x,y);
else
result = gys(y,x);
printf("%d",result);
}
解法二:
更相减损术
#include<stdio.h>
int gys(int a,int b)
{
if(a==b)
return a;
if(a<b)
return gys(b-a,a);
else
return gys(a-b,b);
}
int main()
{
int x,y;
printf("输入两个整数:");
scanf("%d%d",&x,&y);
printf("%d",gys(x,y));
}
5、打印输出特定的图形
调用trangle()函数输出三角形
#include<stdio.h>
int trangle(int n)
{
int i,j;
for(i=0;i<n;i++){
for(j=i;j<n;j++){
printf(" ");
}
for(j=0;j<=i*2;j++){
printf("*");
}
printf("\n");//输出换行符 可用putchar('\n')替换
}
}
int main()
{
int n;
printf("三角形边的*数");
scanf("%d",&n);
trangle(n);
}