FaFu--练习复盘--2

3、函数练习

3.1、函数表达式(1)

描述

        根据以下公式计算数学表达式的值,并将结果作为函数值返回。在main()函数中输入x,调用函数fun(x),并输出fun(x)的值。

1.png

输入

        输入1行,包含1个double类型的浮点数,即输入的变量x。

输出

        输出1行,包含1个保留3位小数的double类型的浮点数,即输出的函数值。

输入样例 1                                                 输入样例 2 

0.26                                                                8.5

输出样例 1                                                输出样例 2

0.265                                   1.904

具体实现

#include <stdio.h>
#include<math.h>
double fun(double x) {double y;if (x>=0)y=(3*x*sin(x)+tan(x) )/(1.5+x);elsey=(3*x*sin(x)+tan(x) )/(1.5-x);return y;
}int main (){
double x;
scanf("%lf",&x);
printf("%.3lf",fun(x));
return 0;
}

3.2、 函数表达式(2)

描述

        根据以下公式计算数学表达式的值,并将结果作为函数值返回。在main()函数中输入x,调用函数fun(x),并输出fun(x)的值。

2.png

输入

        输入1行,包含1个double类型的浮点数,即输入的变量x。

输出

        输出1行,包含1个保留3位小数的double类型的浮点数,即输出的函数值。

输入样例 1                                         输入样例 2 

0.26                                 18.5

输出样例 1                                        输出样例 2

0.607                                342.250

具体实现

#include <stdio.h>
#include<math.h>
double fun(double x) {double y;if (x<10)y=(sqrt(2.5+cos(x)))/(x*sin(x)+3);elsey=x*x;return y;
}int main (){
double x;
scanf("%lf",&x);
printf("%.3lf",fun(x));
return 0;
}

3.3、实现找素数函数

描述

        完成函数IsPrime(int x),该函数用于判断整数x是否为素数,并将判断结果作为函数值返回。在main()函数中输入2个正整数m和n分别作为区间的上、下界,调用函数IsPrime(x)求[m,n]区间内所有素数,并按从小到大的次序输出。

输入

        输入1行,包含2个整数,即正整数m和n,两个整数之间用空格隔开。

输出

        输出1行,包含多个整数,每个整数之间用空格隔开。

输入样例 1                                                输入样例 2 

2 15                                  10 30

输出样例 1                                                输出样例 2

2 3 5 7 11 13                        11 13 17 19 23 29

具体实现

#include <stdio.h>
#include<math.h>
int fun(int m,int n) {for (;m<=n;m++){int i;for (i=2;i<m;i++) if (m%i==0) break;if (i==m) printf ("%d ",m);}
}int main (){int m,n;scanf("%d%d",&m,&n);fun(m,n);
return 0;
}

3.4、可逆素数

描述

        完成函数IsPrime(int x)和函数Reverse(int x)。函数IsPrime(x)用于判断整数x是否为素数;函数Reverse(x)用于求整数x反序数(即将各位数字的顺序倒过来)。在main()函数中输入2个正整数m和n分别作为区间的上、下界,调用函数IsPrime(x)和函数Reverse(x)求[m, n]区间内所有可逆素数(即一个素数的反序数也是素数),并按从小到大的次序输出。

输入

        输入1行,包含2个整数,即正整数m和n,两个整数之间用空格隔开。

输出

        输出1行,包含多个整数,每个整数之间用空格隔开。

输入样例 1 

10 50

输出样例 1

11 13 17 31 37

具体实现

#include <stdio.h>
#include<math.h>
int fun(int m,int n) {int i,j,k;int a,b,c,d;	for (;m<=n;m++){for (i=2;i<m;i++) if (m%i==0) break;if (i==m){a=m%10;b=m%100-a;c=(m-a-b)/100;if (m>100) d=a*100+b+c;else d=b/10+a*10;for (j=2;j<d;j++) if (d%j==0) break; if (d==j) printf("%d ",m);}}
}int main (){
int m,n; 
scanf("%d%d",&m,&n);
fun(m,n);
return 0;
}

3.5、 最大公约数

描述

        完成函数Gcd(int x, int y),该函数用于求整数x和y的最大公约数,并返回最大公约数。在main()函数中输入两个正整数a和b,调用函数Gcd求这两个整数的最大公约数,并输出求解结果。

输入

        输入1行,包含2个整数,即正整数a和b,整数之间用空格隔开。

输出

        输出1行,包含1个整数,即最大公约数。

输入样例 1 

15 25

输出样例 1

5

具体实现

#include <stdio.h>
#include<math.h>
int Gcd(int a,int b) {int rem;		while(b > 0){rem = a % b;a = b;b = rem;}return a;
}int main (){int a,b;scanf("%d%d",&a,&b);printf("%d",Gcd(a,b));
return 0;
}

3.6、基于最大公约数的最小公倍数

描述

        完成函数Gcd(int x, int y),该函数用于求整数x和y的最大公约数,并返回最大公约数。在main()函数中三个正整数a、b和c,调用函数Gcd求这个三个整数的最大公约数和最小公倍数,并输出求解结果。

输入

        输入1行,包含3个整数,即正整数a、b和c,整数之间用空格隔开。

输出

        输出1行,包括2个整数,即最大公约数和最小公倍数。

输入样例 1 

2 4 6

输出样例 1

2 12

具体实现

#include <stdio.h>
int Gcd(int x,int y){	//用于求整数x和y的最大公约数int r;//**************************************if (x < y){ //swap(x, y)r = x; x = y;y = r;}//递归法(辗转相除法)求最大公约数if(y==0){return x;}else{return Gcd(y, x%y);}//======================================
}int main(){int a,b,c,t1,t2, t3, t4, t5;	//a,b,c-用于求最大公约数和最小公倍数的三个整数,scanf("%d%d%d",&a,&b,&c);	//输入(接收)待求最大公约数和最小公倍数的3个整数//**************************************t1 = Gcd(a, b);		//求整数a 和 b的最大公约数t1t2 = Gcd(t1, c);	//求整数t1 和 c的最大公约数t2 —— 三个数的最大公约数t3 = (a * b)/t1;	//求整数a 和 b的【最小公倍数】t3t4 = Gcd(t3, c);	//求整数t3 和 c的最大公约数t4t5 = (t3 * c)/t4;	//求整数t3 和 c的【最小公倍数】t5 —— 三个数的【最小公倍数】printf("%d %d\n", t2, t5);//======================================return 0;
}=================================================================
#include <stdio.h>
int Gcd(int x,int y){while(y^=x^=y^=x%=y);return x;
}int main(){int a,b,c,t1,t2;scanf("%d%d%d",&a,&b,&c);//**************************************t1 = Gcd(Gcd(a, b),c);t2 = (((a * b)/Gcd(a, b)) * c)/Gcd((a * b)/Gcd(a, b), c);	printf("%d %d\n", t1, t2);//======================================return 0;
}

3.7、 寻找最大平均偏差元素

描述

        完成函数find(int a[], int n),该函数用于找出数组a中与所有元素的平均值绝对偏差最大的元素,并返回该元素值。在main()函数中输入数组a各元素的值以及元素个数n,调用函数find求解与平均值绝对偏差最大的元素,并输出求解结果。

输入

        输入2行,第1行有1个整数,即元素个数n,第2行有n个整数,即数组a的元素值,整数之间用空格隔开。  

输出

        输出1行,包含1个整数,即与平均值绝对偏差最大的元素。

输入样例 1 

10
23 21 5 98 89 12 86 80 8 61

输出样例 1

98

具体实现

#include <stdio.h>
#include<math.h>
int find(int a[],int n) {int i,c,k,sum=0,avg=0;c=abs(a[0]-avg);k=0;for (i=0;i<n;i++)sum=sum+a[i];avg=sum/n;for (i=1;i<n;i++)if (fabs(a[i]-avg)>c){c=fabs(a[i]-avg);k=i;}return a[k];
}
int main (){int a[100];int i,n;scanf("%d",&n);for (i=0;i<n;i++)scanf("%d",&a[i]);printf("%d",find(a,n));return 0;}

3.8、 寻找最小平均偏差元素及其下标

描述

        完成函数find(int a[], int n),该函数用于找出数组a中与所有元素的平均值绝对偏差最小的元素,并返回该元素值以及该元素所在的下标。在main()函数中输入数组a各元素的值以及元素个数n,调用函数find求与平均值绝对偏差最小的元素及其下标,并输出求解结果。

输入

        输入有2行,第1行有1个整数,即元素个数n,第2行有n个整数,即数组a的元素值,整数之间用空格隔开。

输出

        输出有1行,包括2个整数,即与平均值绝对偏差最小的元素值和元素所在的下标。

输入样例 1 

10
23 21 5 98 89 12 86 80 8 61

输出样例 1

61 9

具体实现

#include <stdio.h>
#include <math.h>
struct eType{	int x;	int index;
};
eType find(int a[],int n){int k;	double avg=0.0, minDiff;for(int i=0; i<n; i++){avg += a[i];}if(n>0){avg /=n;}k=0;minDiff = fabs(a[0]-avg);for(int t=1; t<n; t++){if(fabs(a[t]-avg) < minDiff){k=t;minDiff = fabs(a[t]-avg);}}struct eType rs={a[k], k};return rs;	
}
int main(){int a[100];	int i,n;	eType f;scanf("%d",&n);			for (i=0;i<n;i++)scanf("%d",&a[i]);	f = find(a, n);		printf("%d %d\n", f.x, f.index);return 0;
}

3.9、 递归计算阶乘和

描述

        完成递归函数fact(int n),该函数用递归调用方法求n!的值,并返回该值。在main()函数中输入整数n,通过调用函数fact,求1!+2!+…+n!的值。

输入

        输入1行,包含1个整数,即输入的整数n。

输出

        输出1行,包含1个整数,即1!+2!+…+n!的值。

输入样例 1 

3

输出样例 1

9

具体实现

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

3.10、递归计算累加数列和

描述

        完成递归函数fan(int a, int n),该函数递归调用方法求aa…a(n个a)的值。在main()函数中输入整数n,通过调用函数fan,求a+aa+aaa+aa…a(n个a)的值。2

输入

        输入1行,包含2个整数,即输入的整数a和n,整数之间用空格分隔。

输出

        输出1行,包含1个整数,a+aa+aaa+aa…a(n个a)的值。

输入样例 1 

2 3

输出样例 1

246

具体实现

#include <stdio.h>
#include<math.h>
int sum(int a,int n) {int i;long sn,sum=0;sn=0;for(i=1;i<=n;i++){sn=a+sn*10;sum=sum+sn;}return sum;
}
int main ()
{int a,n;scanf("%d%d",&a,&n);printf("%d",sum(a,n));}

3.11、宏实现的区间整除性检查

描述

        编写带参数的宏P,实现求2个整数相除的余数。在main()函数中输入2个正整数m和n分别作为区间的上、下界,利用宏P求[m,n]区间所有既被3整除也被7整除的数,并按从小到大的次序输出。

输入

        输入1行,包括2个整数,即正整数m和n,两个整数之间用空格隔开。

输出

        输出1行,包括多个整数,每个整数之间用空格隔开。

输入样例 1 

10 30

输出样例 1

21

具体实现

#include <stdio.h>
#define p(a,b) a%b
int main ()
{int m,n;scanf("%d%d",&m,&n);for (;m<=n;m++){if(p(m,3)==0 && p(m,7)==0)printf ("%d ",m);	}return 0;}

3.12、 三数最大值宏计算器

描述

        编写带参数的宏MAX,实现求两数中的较大值。在main()函数中输入3个整数x、y和z,利用宏MAX求这三个数的最大值。

输入

        输入1行,包括3个整数,即输入的整数x、y和z,整数之间用空格隔开。

输出

        输出1行,包括1个整数,即三个数的最大值。

输入样例 1 

100 800 300

输出样例 1

800

具体实现

#include <stdio.h>
#define MAX(a,b,c) c>(a>b?a:b)?c:(a>b?a:b)
int main ()
{int a,b,c;scanf("%d%d%d",&a,&b,&c);printf("%d",MAX(a,b,c));return 0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/418037.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php array_diff 比较两个数组bug避坑 深入了解

今天实用array_diff出现的异常问题&#xff0c;预想的结果应该是返回 "integral_initiate">"0"&#xff0c;实际没有 先看测试代码&#xff1a; $a ["user_name">"测","see_num">0,"integral_initiate&quo…

蓝桥杯练习题dfs与bfs

&#x1f4d1;前言 本文主要是【算法】——dfs与bfs的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff…

RabbitMQ与SpringAMQP

MQ&#xff0c;中文是消息队列&#xff08;MessageQueue&#xff09;&#xff0c;字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。&#xff08;经纪人&#xff01;&#xff09; 1.RabbitMQ介绍 微服务间通讯有同步和异步两种方式 同步&#xff08;通信&#xff0…

cluecumber-report-plugin生成cucumber测试报告

cluecumber为生成测试报告的第三方插件&#xff0c;可以生成html测报&#xff0c;该测报生成需以本地json测报的生成为基础。 所以需要在测试开始主文件标签CucumberOptions中&#xff0c;写入生成json报告。 2. pom xml文件中加入插件 <!-- 根据 cucumber json文件 美化测…

Git 配置与理解

简述 Git 在 Windows 和 Ubuntu 中的配置&#xff0c;以及对 Git 工作区域划分和 Git 中对于文件状态划分的理解。 git 基础安装与配置 基于 WSL 的 Ubuntu 下的 git 打开或关闭Windows功能 -> Hyper-V、Virtual Machine Platform、Windows Subsystem for Linux # 1.必须…

【好文翻译】JavaScript 中的 realm 是什么?

本文由体验技术团队黄琦同学翻译。 原文链接&#xff1a; https://weizmangal.com/2022/10/28/what-is-a-realm-in-js/ github仓库地址&#xff1a; https://github.com/weizman/weizman.github.io/blob/gh-pages/_posts/2020-02-02-what-is-a-realm-in-js.md 前言 作为我对…

【51单片机Keil+Proteus8.9】温室盆栽灌溉系统

实验五 实验名称 温室盆栽灌溉系统 软件设计&#xff1a; 1. 定义对应的引脚和端口的别名。 2. 编写延时函数&#xff0c;用于控制程序的执行速度。 3. 编写LCD控制函数&#xff0c;包括发送命令和发送数据两种操作。 4. 编写显示函数&#xff0c;用于在LCD上显示字符串…

免费使用IntelliJ IDEA的7种方式(2024 最新版)

大家好&#xff0c;我是小黑&#xff0c;今天要和大家分享的是如何免费使用 IntelliJ IDEA。我们都知道&#xff0c;作为一名程序员&#xff0c;拥有一个高效的开发工具是至关重要的。IntelliJ IDEA 无疑是市面上最受欢迎的开发工具之一。但是&#xff0c;获取授权的成本有时会…

探究Java中的链表

引言&#xff1a; 在Java编程中&#xff0c;链表是一种常见的数据结构&#xff0c;具有灵活的内存管理和动态的元素插入与删除能力。本篇博客将深入探讨链表的结构和概念&#xff0c;比较链表与顺序表的区别&#xff0c;介绍Java中LinkedList的常用函数并通过示例说明LinkedLis…

Android Termux技能大揭秘:安装MySQL并实现公网远程连接

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装MariaDB二. 安装cpolar内网穿透工具三. 创建安全隧道映射mysql四. 公网…

class_12:析构函数

#include <iostream>using namespace std;class Myclass{ private:int* datas; public:Myclass(int size){datas new int[size];}~Myclass(){cout<<"析构函数被调用"<<endl;delete [] datas;} };int main() {cout << "Hello World!&qu…

【复现】科达ViewShot登录系统数据库信息泄露漏洞_23

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 科达ViewShot视频监控系统采用数字化、网络化和智能化相融合的新一代视频监控技术&#xff0c;支持领先的视音频编解码算法&#…