很燒腦的陣列比較運用

輸入10數值
再輸入1數值
找出最接近的數值
若有相等則取最小

#include<stdio.h>
#include<stdlib.h>//abs無論正負數皆為給正數值,例-5給5
int main(){
int i,n[10],g;
for(int a=1;a<=10;a++){
scanf("%d",&n[a-1]);
}
while(1){
printf("key an integer:");
scanf("%d",&g);
if(g==0){
break;
}
int near_n=n[0],near_d=abs(g-n[0]);
//陣列組內內容///目標值與比較組差距
for(i=1;i<10;++i){
int d=abs(g-n[i]);//此d為目標值比較另一個陣列位置
if(d<near_d ||
(d==near_d &&n[i]<near_n)){
near_d=d;//目標值差距
near_n=n[i];//組別內數字
}
}
printf("near_d:%d\n",near_d);
printf("near_n:%d\n",near_n);
}
return 0;
}

留言