C<6.1>函数习题(函数内测整形数组大小,递归

news2024/11/23 11:48:06

 

目录

 1,数组比较

2,勒让德多项式

3,查询数组(sizeof问题


 1,数组比较

1. 编写函数实现比较两个长度为 n(
n 可变)的数组大小。比较逻
辑如下:
假设 a 和 b 为 n 个元素的整型数组,比较两个数组对应元素的
大小,用变量 m 和 n 记录 a[i]>b[i]和 a[i]<b[i]的个数。如果 m>n,
则数组 a>b;如果 m<n,则数组 a<b;如果 m==n,则数组 a==b。

 

#include<stdio.h>
int main()
{
	int value;
	int compare(int* arraya, int* arrayb, int n);
	int array1[10] = { 1,2,3,4,5,6,7,8,9,0 };
	int array2[10] = { 1,1,2,3,5,8,3,1,4,5 };
	value = compare(array1, array2, 10);
	if (value == 0)
		printf("两者一样大");
	else
		(value == 1) ? printf("前者大") : printf("后者大");
	return 0;
}
int compare(int* arraya, int* arrayb, int n)
{
	int x=0, y=0;//m:数组a大的次数;n数组b大的次数;
	for (int i = 0; i < n; i++)
	{
		if ((*(arraya + i)) > (*(arrayb + i)))
			x++;
		if ((*(arraya + i)) < (*(arrayb + i)))
			y++;
	}
	if (x < y) { return -1; }
	if (x > y) { return 1; }
	if (x == y) { return 0; }
}

2,勒让德多项式

 

编写函数实现计算 x 的 n 阶勒让德多项式的值。x 的 n 阶勒让
德多项式的递归公式如下:

 

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	double lrd(double x, int n);
	int n;
	double x;
	scanf("%lf", &x);
	scanf("%d", &n);
	printf("\n答案是%lf",lrd(x, n));
	return 0;
}
double lrd(double x, int n)
{
	double y,z;
	if (n == 0) { return 1; }
	if (n == 1) { return x; }
	if (n != 0 && n != 1)
	{
		y = lrd(x,n - 1);
		z = lrd(x, n - 2);
		return ((2 * n - 1) * x * y - (2 * n - 1) * x * z) / n;
	}
}

3,查询数组

3.编写函数,实现从数组中查找出具有给定值 x 的元素,若查找成
功则返回该元素的下标位置,否则查找失败返回-1。
比如:一个数组有 10 个元素,分别为:42, 55, 73, 28, 48, 66, 30, 65,
94, 72。若 x 为 28,则返回 3,若 x 为 100,则返回-1
#define _CRT_SECURE_NO_WARNINGS
#define ARR_LENGTH(arr)    sizeof(arr)/sizeof(arr[0])  
#include<stdio.h>

void main()
{
	int retrieve(int* array, int x, int length);
	
	int sample[] = { 42, 55, 73, 28, 48, 66, 30, 65, 94, 72 };//数组
	int x,len1;

	len1=ARR_LENGTH(sample);
	scanf("%d", &x);
	printf("%d", retrieve(sample, x,len1));
}
int retrieve(int* array,int x, int length)
{
	//length = (sizeof(array) / sizeof(array[0]));注意不能用这个
	for (int i = 0; i < length; i++)
	{
		if (x == *(array + i))
		{
			return i;
		}
	}
	return -1;
}

 注意:当数组以指针传递的时候,其本身会变成(32位计算机:4个字节;64位计算机:8个字节)

所以常用的sizeof测数组大小函数内不再适用

ps:这里我只好用了宏定义,当然直接数组大小直接传进来也可以

网上看到大佬通过这个方法传递数组,请大家参考观摩

template <size_t N>
long calc(long (&array)[N]) // 利用模板传递参数 array是数组的引用
{
    long res = 0L;
    
    for (size_t i = 0;i < N;i ++) {
        res += array[i];
    }
    
    return res;
}

int main()
{
    long longarr[] = {1, 23, 4, 45, 46, 57,};
    
    long sum = calc(longarr);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web(一)Web前端开发概述

第1关_Web前端开发相关的概念 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.Web系统的组成&#xff1b;2.浏览器的概念&#xff1b;3.URL的概念&#xff1b;4.Web标准。 Web系统的组成&#xff1a;Web是Internet上最受欢迎的一种多媒体信息服务系统。 整个…

【LeetCode】string 类的几道简单题

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《阿亮爱刷题》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 &#x1f449;仅反转字母&a…

Java源代码到用户使用都经历了哪些阶段

1、测试好的代码是如何部署给用户的。 首先&#xff1a;写好的代码通过打包生成jar包放到一个服务器上运行&#xff0c;服务器上需要有Java虚拟机&#xff0c;当然可以在存放jar包的服务器上安装数据库&#xff0c;或者把服务器放到另外一台服务器上也可以&#xff0c;但是在代…

SpringCloud-04-Feign

一、Feign介绍 Feign是一个声明式web服务客户机。它使编写web服务客户机更容易。要使用Feign创建一个接口并对其进行注释。它具有可插入注释支持&#xff0c;包括Feign注释和JAX-RS注释。Feign还支持可插式编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持&#xff…

10个全球最佳免费土地覆被/土地利用数据资源

不知道大家有没有想过&#xff0c;在我们来到地球的一生时间中&#xff0c;地球会有多大的变化呢? 是在空旷的草地新建了公园&#xff0c;还是低矮的平房变成了一座座大厦? 这些林林总总的变化&#xff0c;总是令人应接不暇。然而&#xff0c;在漫长的人类历史历程中&#xf…

2022亚太数学杯数学建模竞赛A题(思路分析......)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

Java数据类型:基本数据类型和引用数据类型

Java 语言是强类型语言&#xff0c;编译器存储在变量中的数值具有适当的数据类型。学习任何一种编程语言都要了解其数据类型&#xff0c;下面将详细介绍 Java 中的数据类型。 Java 语言支持的数据类型分为两种&#xff1a;基本数据类型&#xff08;Primitive Type&#xff09;…

NET CORE Configuraion 使用详解

相关配置 <Project Sdk"Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>netcoreapp3.1</TargetFramework></PropertyGroup><ItemGroup><!--读取配置的核心包--><Packa…

谷歌浏览器自定义标签页 newtab

创建一个文件夹, 里面放置信息: 其中&#xff0c; manifest.json 不能变&#xff0c; home.html 是新的标签页信息 manifest.json 内容: {"chrome_url_overrides": {"newtab": "home.html"},"manifest_version": 2,"name"…

新知实验室TRTC 初体验

引言 随着短视频行业的不断发展&#xff0c;人们对实时音视频的需求越来越多。在线直播&#xff08;秀场直播、电商直播、赛事直播、新品发布会、路演、在线拍卖&#xff09;的相关产品不断涌现&#xff0c;百花齐放。对于业务来说&#xff0c;自研开发一个实时音视频服务&…

spring boot 过滤器拦截器与aop

目录 一、过滤器 (Filter) 1.1 什么是过滤器 1.2 springboot配置过滤器 方式一&#xff1a;使用WebFilter 二、拦截器(Interceptor) 2.1 什么是拦截器 2.2 使用拦截器方法 三、拦截器&过滤器与spring aop的区别 3.1 区别 3.2添加aop 适用场景&#xff1a; 拦截…

Vue3中jsx父子传值、provide和inject、v-memo指令、Teleport内置组件、KeepAlive缓存组件、transition过渡组件

文章目录1. jsx父子传值2. provide和inject3. v-memo指令4. Teleport内置组件5. KeepAlive缓存组件6. transition过渡组件1. jsx父子传值 父组件&#xff1a; <template><div><child :title"title" :setTitle"setTitle" /></div>…

GitHub下载量过百万,阿里P8秘密分享的「亿级并发系统设计」真香

随着互联网的不断发展&#xff0c;CPU硬件的核心数也在不断进步&#xff0c;并发编程越来越普及&#xff0c;但是并发编程并不像其他业务那样直接了当。在编写并发程序时&#xff0c;我们常常都会出现各种漏洞&#xff0c;这些问题往往都突然出现&#xff0c;然后又迅速消失&am…

Java编码与解码

首先区分加密与编码并不是一回事&#xff0c; 本节主要讲述常见的三种编解码方式&#xff0c;分别为&#xff1a;Unicode、URL、Base64。 常见编码算法&#xff1a; Unicode编码&#xff1a;每一字符都可变成以 \u 开头&#xff0c;长度为6的字符串。URL编码&#xff1a;以百分…

Java并发编程--多线程间的同步控制和通信

使用多线程并发处理&#xff0c;目的是为了让程序更充分地利用CPU &#xff0c;好能加快程序的处理速度和用户体验。如果每个线程各自处理的部分互不相干&#xff0c;那真是极好的&#xff0c;我们在程序主线程要做的同步控制最多也就是等待几个工作线程的执行完毕&#xff0c;…

JS表达式完全攻略

在语法概念中&#xff0c;运算符属于词&#xff0c;表达式属于短语。表达式由一个或多个运算符、操作数组成的运算式。表达式的功能是执行计算&#xff0c;并返回一个值。 表达式的形式 表达式是一个比较富有弹性的运算单元。简单的表达式就是一个直接量、常量或变量。例如&a…

【优化调度】粒子群算法求解水火电调度优化问题【含Matlab源码 1181期】

⛄一、粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在。生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型&#xff0c;在他的仿真中&#xff0c;每一个个体都遵循&#xff1a;避免与邻域个体相撞&#xff1a;匹配邻域个体…

Java面向对象之——封装

文章目录前言一、封装的概念二、何为封装&#xff1f;三、封装拓展——包&#x1f351;1、包的概念&#x1f351;2、导入包中的类&#x1f351;3、自定义包&#x1f351;4、常见的包四、访问限定符&#x1f351;1、public修饰符&#x1f351;2、private修饰符&#x1f351;3、默…

软件产品确认测试包括哪些方面

1.技术方面 确认测试又称有效性测试&#xff0c;是在模拟的环境下&#xff0c;运用黑盒测试的方法&#xff0c;验证被测软件是否满足需求规格说明书列出的需求。 确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后&#xff0c;已经按照设计把所有的模…