OJ《程序设计基础I》实验7- 函数的应用

28 篇文章 2 订阅
17 篇文章 1 订阅

7-1 A - C语言实验——计算表达式

#include<stdio.h>
#include<math.h>
double f(double x,int n)
{
    double y;
    if(n==1)
    {
        y=sqrt(n+x);
    }
    else
        y=sqrt(n+f(x,n-1));
    return y;//double定义函数,不是void需要有返回值
}//写函数咯;
int main()
{
    double x;
    int n;
    double y;
    scanf("%lf %d",&x,&n);
    y=f(x,n);
    printf("%.2lf",y);
    return 0;
}

7-2 B - 求数列的和

#include<stdio.h>
#include<math.h>
int main()
{
    int n,m,i;
    double sum1,sum2,a;
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        sum1=n;
        sum2=n;
        a=n;
        for(i=1;i<m;i++)
        {
            sum1=sqrt(a);//sqrt为开平方函数,可以直接使用;
            a=sum1;
            sum1=sum2+sum1;
            sum2=sum1;
        }
        printf("%.2f\n",sum1);
    }
    return 0;
}

7-3 C - C语言实验——一元二次方程Ⅰ

#include<stdio.h>
#include<math.h>
double f(double a,double b,double c)
{
    double x1,x2,t;
    x1=(-b+sqrt(b*b-4*a*c))/(2*a);
    x2=(-b-sqrt(b*b-4*a*c))/(2*a);
    if(x1 < x2)
    {
        t=x1;
        x1=x2;
        x2=t;
    }
    printf("%.2lf %.2lf",x1,x2);
    return 0;
}
int main()
{
    double a,b,c;
    scanf("%lf %lf %lf",&a,&b,&c);
    f(a,b,c);
    return 0;
}

7-4 D - 求三角形面积

#include<stdio.h>
#include<math.h>
double f(double a,double b,double c)
{
    double s,p;
    p=(a+b+c)/2;
    s=sqrt((p*(p-a) * (p - b) * (p -c)));
    printf("%.3lf",s);
    return 0;
}
int main()
{
    double a,b,c;
    scanf("%lf %lf %lf",&a,&b,&c);
    f(a,b,c);
    return 0;
}

7-5 E - 求实数绝对值

#include<stdio.h>
#include<math.h>
void f(double x)
{
    double y;
    if(x>0)
        y=x;
    else y=-x;
    printf("%.2lf\n",y);
}//void函数,不需要返回值
int main()
{
    double x;
    while(~scanf("%lf",&x))
    {
        f(x);
    }
    return 0;
}

7-6 F - C/C++程序训练6---歌德巴赫猜想的证明

#include<stdio.h>
int f(int n)
{
	int i;
	for(i=2;i<n;i++)
	{
		if(n%i==0)
		break;
	}
	if(n==i)
	return 1;
	else return 0;
 } 
 int main()
 {
 	int n,i;
 	scanf("%d",&n);
 	for(i=3;i<n;i++)
 	{
 		if(f(i)==1&&f(n-i)==1)
 		break;
	 }
	 printf("%d=%d+%d",n,i,n-i);
	 return 0;
 }

7-7 G - N!

​
#include<stdio.h>
int f(int n,int m)
{
	long a=1,b=1,c=1;
	int i;
	for(i=n;i>0;i--)
		a=a*i;
	for(i=m;i>0;i--)
		b=b*i;
	for(i=n-m;i>0;i--)
		c=c*i;
	printf("%ld %ld\n",a/c,a/c/b);
	return 0;
 } 
 int main()
 {
 	int n,m;
 	while(scanf("%d %d",&n,&m)!=EOF)
 	{
 		f(n,m);
	 }
	 return 0;
}

​

7-8 H - 分段函数

#include<stdio.h>
#include<math.h>
double f(double x)
{
	double y;
	if(x>0&&x<10) y=log2(x);
	if(x==0) y=0;
	if(x<0) y=-x+sin(x);
	if(x>=10) y=x*x;
	printf("%.2lf\n",y);
	return 0;
 } 
 int main()
 {
 	int t,i;
 	double x;
 	scanf("%d",&t);
 	for(i=0;i<t;i++)
 	{
 		scanf("%lf",&x);
 		f(x); 
	 }
	 return 0;
}

7-9 I - C/C++经典程序训练2---斐波那契数列

#include<stdio.h>
int f(int n)
{
    int y;
    if(n==1||n==2)
        y=1;
    else
        y=f(n-1)+f(n-2);
    return y;
}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d",f(n));
    return 0;
}

7-10 J - 计算题

#include<stdio.h>
int f(int m,int n)
{
    int y;
    if(m==1) y=n;
    if(n==1) y=m;
    if(n>1&&m>1) y=f(m-1,n)+f(m,n-1);
    return y;
}
int main()
{
    int n,m,t,i,y;
    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
    	scanf("%d %d",&m,&n);
    	y=f(m,n);    
		printf("%d\n",y);
	}
    return 0;
}

7-11 K - 斐波那契?

#include<stdio.h>
int f(int n)
{
    int y;
    if(n==1) y=2;
    if(n==2) y=3;
    if(n==3) y=5;
    if(n>3) y=f(n-1)+f(n-2)-f(n-3);
    return y;
}
int main()
{
    int n,y;
    scanf("%d",&n);
    y=f(n);
	printf("%d",y);
    return 0;
}

7-12 L - 高中数学?

#include<stdio.h>
int f(int n)
{
    int y;
    if(n==1) y=0;
    if(n==2) y=1;
    if(n>=3) y=4*f(n-1)-5*f(n-2);
    return y;
}
int main()
{
    int i,n,y,t;
    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
    	scanf("%d",&n);    
		y=f(n);
		printf("%d\n",y);
	}
    return 0;
}

7-13 M - 计算组合数

#include<stdio.h>
int f(int n,int m)
{
    int y;
    if(m==0) y=1;
    else if(n==1) y=1;
    else if(n==m) y=1;
    else y=f(n-1,m-1)+f(n-1,m);
    return y;
}
int main()
{
    int i,n,y,m,t;
    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
    	scanf("%d %d",&n,&m);    
		y=f(n,m);
		printf("%d\n",y);
	}
    return 0;
}

加油加油加油!!!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CRAEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值