C语言笔试题之求出三角形的最大周长

实例要求:

  • 1、给定由一些正数(代表长度)组成的数组 nums
  • 2、返回 由其中三个长度组成的、面积不为零的三角形的最大周长
  • 3、如果不能形成任何面积不为零的三角形,返回 0

案例展示:

C语言笔试题之求出三角形的最大周长_第1张图片

实例分析:

  • 1、引入qsort函数和自定义cmp函数解决问题;

  • 2、对所有的元素快速排序后,取最大的三个边长,并判断是否满足三角形周长;

  • 3、若满足条件就返回最大周长,不满足则返回0;

  • qsort函数:

	void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
	/*
	参数:
		base //指向要排序的数组的第一个元素的指针
		nitems //由 base 指向的数组中元素的个数
		size //数组中每个元素的大小,以字节为单位
		compar //用来比较两个元素的函数
		
	*/
  • 自定义cmp函数:
	//对int数组升序排序
	int cmp(const void *a ,const void *b)
	{
		return *(int *)a-*(int *)b;
	}

示例代码:

	
	int cmp(const void *a ,const void *b)
	{
		return *(int *)a-*(int *)b;
	}
	
	
	
	int largestPerimeter(int* nums, int numsSize) {
	    qsort(nums, numsSize, 4, cmp); // 对数组进行升序排序
	
	    for (int i = numsSize - 1; i >= 2; i--) {
	        if (nums[i] < nums[i-1] + nums[i-2]) {
	            return nums[i] + nums[i-1] + nums[i-2]; // 返回最大周长
	        }
	    }
	
	    return 0;
	}

运行结果:

C语言笔试题之求出三角形的最大周长_第2张图片
C语言笔试题之求出三角形的最大周长_第3张图片

你可能感兴趣的:(C语言学习系列,笔试题,C语言练习题系列,c语言,算法,数据结构)