讓使用者輸入10個整數後,輸入要查詢的數字後,顯示輸入的整數中最接近的一個,輸入0則表示結束,我們可以使用C語言的陣列來成,下程式碼
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,q,n[10];
for(i=1;i<=10;i++){
scanf("%d", &n[i-1]);
}
printf("Q: ");
scanf("%d", &q);
int nearest_n=n[0];
printf("%d\n", nearest_n);
for(i=1;i<=10;i++){
if(abs(q-n[i])<abs(q-nearest_n)||
(abs(q-n[i])==abs(q=nearest_n)&&
n[i]<nearest_n)){
nearest_n=n[i];
}
}
printf("%d\n", nearest_n);
return 0;
}
上面的程式碼中,我們讓使用者輸入10個數字讓他去查詢在輸入一個數字讓他去查詢最接近的數字,首先我們我們先宣告3個數字,for迴圈讓i跑十次在n[10]裡面有十個元素從0到9的陣列裡,接著我們進入查詢的模式,所以我們printf出Q讓使用者輸入,scanf鍵盤輸入q最接近的值,我們在宣告nearest_n一個最接近的值,第二個for迴圈我們也讓他跑10次,if中的距離怎麼算麼就是相減,如果我們q與n陣列中的i元素相減比q與nearest_n原本最接近的還要小我們原本最近的就換n[i]做,由於我們距離是正的,所以我們要用abs來顯示不管-3顯示3或是3也會顯示3距離是正的,||或假設如果3和5 7和5的距離都是2我們會希望顯示3所以我們就要用到(abs(qn[i])==abs(q=nearest_n)&&n[i]<nearest_n)就是如果我們兩個一樣近,我們就比我們原本的nearest_n小還是新的n[i]小如果新的小最近的就換n[i]新的做,最後印出來就是我們要查詢最接近的數字了