日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

發(fā)布時(shí)間:2024/9/27 67 豆豆

題目要求

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

思路難點(diǎn)

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

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

思路

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

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

答案:

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<math.h> #include<algorithm> using namespace std; /*編寫一個(gè)C程序,實(shí)現(xiàn)以下功能: 輸入n個(gè)人的身高,然后從n個(gè)人中選出身高差值最小的兩個(gè)人作為禮儀 (如果差值相同的話,選取其中最高的兩個(gè)人),要求輸出兩個(gè)禮儀的身高。 */ #define MAX 500 void func(int* arr, int n, int* a, int* b) {int min = abs(a - b);//定義一個(gè)最小量,之后通過動(dòng)態(tài)規(guī)劃去不斷改變這個(gè)值,直到找到最小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]);//絕對(duì)值函數(shù),頭文件是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;//定義兩個(gè)差值最小的人,假定為數(shù)組的0和1元素a = arr[0], b = arr[1];sort(arr, arr + n);//這里的sort是一個(gè)C++里面的STL,我懶得去寫排序代碼,直接用排序函數(shù)了//這里用冒泡排序是同理的。func(arr, n,&a,&b);printf("%d %d", a, b); }

個(gè)人感覺是沒有什么技術(shù)難點(diǎn),但感覺代碼不是很美觀。而且時(shí)間復(fù)雜度也很高。繼續(xù)加油吧

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。