国外做的比较的ppt网站有哪些,长沙营销推广,化妆品备案查询,设计素材网站月收益题目要求
编写一个C程序#xff0c;实现以下功能#xff1a; 输入n个人的身高#xff0c;然后从n个人中选出身高差值最小的两个人作为礼仪 #xff08;如果差值相同的话#xff0c;选取其中最高的两个人#xff09;#xff0c;要求输出两个礼仪的身高。#xff08;使用…题目要求
编写一个C程序实现以下功能 输入n个人的身高然后从n个人中选出身高差值最小的两个人作为礼仪 如果差值相同的话选取其中最高的两个人要求输出两个礼仪的身高。使用函数实现 思路难点
1.怎么去找差值最小然后返回两个人的身高呢。要知道如果乱序输入身高怎么进行比较是个难度保存两个人身高再返回也是难点
2.如果差值相同最高两个人身高怎么找怎么返回 思路
1.对于这种乱序的情况没有更好的方法也许只是我没有想到实力不够只能通过两层for循环来依次实现数值相减。虽然时间复杂度较高但由于是学生实验而不是oj倒是可以容忍假的我忍不了
2.可以通过事先排好序然后去返回数组arr[n-1],arr[n-2]注意数组arr[n]放的是‘\0’ 答案
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
#includemath.h
#includealgorithm
using namespace std;
/*编写一个C程序实现以下功能
输入n个人的身高然后从n个人中选出身高差值最小的两个人作为礼仪
如果差值相同的话选取其中最高的两个人要求输出两个礼仪的身高。
*/
#define MAX 500
void func(int* arr, int n, int* a, int* b) {int min abs(a - b);//定义一个最小量之后通过动态规划去不断改变这个值直到找到最小for (int i 0; i n; i) {for (int j 0; j n; j) {//差值不同if (abs(arr[i] - arr[j]) min) {min abs(arr[i] - arr[j]);//绝对值函数头文件是math.h*a arr[i];*b arr[j];}//差值相同else{*a arr[n - 2];//记住‘\0’的存在*b arr[n - 1];}}}
}
int main() {int n, arr[MAX];scanf(%d, n);for (int i 0; i n; i) {scanf(%d, arr[i]);}int a, b;//定义两个差值最小的人假定为数组的0和1元素a arr[0], b arr[1];sort(arr, arr n);//这里的sort是一个C里面的STL我懒得去写排序代码直接用排序函数了//这里用冒泡排序是同理的。func(arr, n,a,b);printf(%d %d, a, b);
}
个人感觉是没有什么技术难点但感觉代码不是很美观。而且时间复杂度也很高。继续加油吧