FaFu--练习复盘--2

2024-01-20 23:04
文章标签 练习 复盘 fafu

本文主要是介绍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;}

这篇关于FaFu--练习复盘--2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/627636

相关文章

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1(高级消息队列协议)是一种网络协议,它允许遵从该协议的客户端(Publisher或者Consumer)应用程序与遵从该协议的消息中间件代理(Broker,如RabbitMQ)进行通信。 AMQP 0-9-1模型的核心概念包括消息发布者(producers/publisher)、消息(messages)、交换机(exchanges)、

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

MySql 事务练习

事务(transaction) -- 事务 transaction-- 事务是一组操作的集合,是一个不可分割的工作单位,事务会将所有的操作作为一个整体一起向系统提交或撤销请求-- 事务的操作要么同时成功,要么同时失败-- MySql的事务默认是自动提交的,当执行一个DML语句,MySql会立即自动隐式提交事务-- 常见案例:银行转账-- 逻辑:A给B转账1000:1.查询

html css jquery选项卡 代码练习小项目

在学习 html 和 css jquery 结合使用的时候 做好是能尝试做一些简单的小功能,来提高自己的 逻辑能力,熟悉代码的编写语法 下面分享一段代码 使用html css jquery选项卡 代码练习 <div class="box"><dl class="tab"><dd class="active">手机</dd><dd>家电</dd><dd>服装</dd><dd>数码</dd><dd

014.Python爬虫系列_解析练习

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优

如何快速练习键盘盲打

盲打是指在不看键盘的情况下进行打字,这样可以显著提高打字速度和效率。以下是一些练习盲打的方法: 熟悉键盘布局:首先,你需要熟悉键盘上的字母和符号的位置。可以通过键盘图或者键盘贴纸来帮助记忆。 使用在线打字练习工具:有许多在线的打字练习网站,如Typing.com、10FastFingers等,它们提供了不同难度的练习和测试。 练习基本键位:先从学习手指放在键盘上的“家位”开始,通常是左手的

anaconda3下的python编程练习-csv翻译器

相关理解和命令 一、环境配置1、conda命令2、pip命令3、python命令 二、开发思路三、开发步骤 一、环境配置 1、conda命令 镜像源配置 conda config --show channels //查看镜像源conda config --remove-key channels //删除添加源,恢复默认源#添加镜像源conda config --ad

推荐练习键盘盲打的网站

对于初学者来说,以下是一些推荐的在线打字练习网站: 打字侠:这是一个专业的在线打字练习平台,提供科学合理的课程设置和个性化学习计划,适合各个水平的用户。它还提供实时反馈和数据分析,帮助你提升打字速度和准确度。 dazidazi.com:这个网站提供了基础的打字练习,适合初学者从零开始学习打字。 Type.fun打字星球:提供了丰富的盲打课程和科学的打字课程设计,还有诗词歌赋、经典名著等多样

综合DHCP、ACL、NAT、Telnet和PPPoE进行网络设计练习

描述:企业内网和运营商网络如上图所示。 公网IP段:12.1.1.0/24。 内网IP段:192.168.1.0/24。 公网口PPPOE 拨号采用CHAP认证,用户名:admin 密码:Admin@123 财务PC 配置静态IP:192.168.1.8 R1使用模拟器中的AR201型号,作为交换路由一体机,下图的WAN口为E0/0/8口,可以在该接口下配置IP地址。 可以通过

JAVA学习-练习试用Java实现“删除有序数组中的重复项”

问题: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下