亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

噴水裝置問題一 第一個函數不懂

噴水裝置問題一 第一個函數不懂

C
four7 2017-03-29 18:57:23
#include<stdio.h> #include<stdlib.h>//包含快速排序的頭文件 #include<math.h>//數學函數頭文件 double length(double r)//將R轉換成有效值 { return 2 * sqrt((double)(r * r - 1)); 此處不理解 請大神解釋 為什么要減1 } int com(const void *a,const void *b)//快速排序比較函數 { return (*(double *)b - *(double *)a > 0 ? 1 : -1);//從大到小排序 } int main() { int m,n,i,j = 0;//j統計滿足>1的裝置個數 double r[1020],temp,sum=0.0;//存儲每個滿足條件的可濕潤范圍 scanf("%d",&m); while(m--) { scanf("%d",&n); for(i = 0,j = 0; i < n; i ++) { scanf("%lf",&temp); if(temp > 1) //因為草坪的寬度為2米 所以舍棄半徑小于等于1的裝置 r[j++] = length(temp); } qsort(r,j,sizeof(r[0]),com); //qsort排序函數:r為要排序的數組、j為要排序的數組的長度、sizeif(r[0])為數組元素的大?。ㄒ粋€字節為單位) //com為上面定義的判斷大小函數的指針,需要自己定義 //for(i = 0; i < j; i ++)測試用 // printf("%.2f ",r[i]); for(i = 0,sum = 0;i < j; i ++){ sum += r[i]; //sum存儲裝置所能濕潤的長度 if(sum >= 20) //如果sum大于或等于20,說明已經濕潤完畢 break; } printf("%d\n",i + 1); //輸出時加1,對應和i的關系,假如i=0是即退出循環,說明1個裝置即可完成任務,此時可以看出需要裝置個數和i之間的關系 } system("pause"); return 0; }
查看完整描述

1 回答

?
慕的地3800369

TA貢獻15條經驗 獲得超7個贊

要是有人回答你這個問題,嗯,我服....

查看完整回答
反對 回復 2017-04-26
  • 1 回答
  • 0 關注
  • 1006 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號