日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编写一个C程序,实现以下功能:输入n个人的身高,然后从n个人中选出身高差值最小的两个人作为礼仪(如果差值相同的话,选取其中最高的两个人),要求输出两个礼仪的身高。

發布時間:2024/9/27 编程问答 47 豆豆

題目要求

編寫一個C程序,實現以下功能:
輸入n個人的身高,然后從n個人中選出身高差值最小的兩個人作為禮儀
(如果差值相同的話,選取其中最高的兩個人),要求輸出兩個禮儀的身高。(使用函數實現)

思路難點

1.怎么去找差值最小,然后返回兩個人的身高呢。要知道如果亂序輸入身高,怎么進行比較是個難度,保存兩個人身高再返回也是難點

2.如果差值相同,最高兩個人身高怎么找?怎么返回?

思路

1.對于這種亂序的情況,沒有更好的方法(也許只是我沒有想到,實力不夠)只能通過兩層for循環來依次實現數值相減。雖然時間復雜度較高,但由于是學生實驗而不是oj,倒是可以容忍(假的,我忍不了)

2.可以通過事先排好序然后去返回數組arr[n-1],arr[n-2](注意數組arr[n]放的是‘\0’)

答案:

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<math.h> #include<algorithm> 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); }

個人感覺是沒有什么技術難點,但感覺代碼不是很美觀。而且時間復雜度也很高。繼續加油吧

總結

以上是生活随笔為你收集整理的编写一个C程序,实现以下功能:输入n个人的身高,然后从n个人中选出身高差值最小的两个人作为礼仪(如果差值相同的话,选取其中最高的两个人),要求输出两个礼仪的身高。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。