摘要:要求語言要求純語言,知識點要求讀文件,結構體,動態分配內存,數組,指針,函數,循環,條件判斷。
代碼描述:
#include #include #include #include struct Coordinator{ int x; int y;};typedef struct City{ char name[5]; struct Coordinator place;}Point;void myinprint(FILE *p,Point *q,int n);void myoutprint(Point *q,int n);Point* readfile();double distance(Point *city,char a[],char b[],int n);void closest(Point city[]);double luJin(Point city[],char array[],int n);void disAll(Point city[]);int n;//判斷出城市個數; int main() { Point *point = readfile(); char array[6] = "ABCD"; char a[5],b[5]; printf("/n求距離 請輸入一對頂點如(A B):"); scanf("%s %s",a,b); printf("%s和%s的距離是:%.3lf",a,b,distance(point,a,b,n)); closest(point);//求短距離 luJin(point,array,n); disAll(point); return 0;}Point* readfile(){ FILE *fp = NULL;//讀文件必須首先建立一個FILE 指針; fp = fopen("test1.txt","r");//打開一個文件 傳入的參數為文件路徑與名字,與文件操作方式; fscanf(fp,"%d",&n);//通過函數fscanf進行存取 Point *p = (Point*)malloc(n*sizeof(Point));//申請內存;p也為數組的首地址,n就為數組的大小 printf("有%d個城市/n",n); myinprint(fp,p,n); myoutprint(p,n);// fclose(fp);//打開一個文件操作完后就得關閉這個文件 // free(p);//釋放內存 return p;}void myinprint(FILE *p,Point *q,int n){//傳入Point 數組 以及 文件大小 int i; for(i=0;i<n;i++,q++) fscanf(p,"%s%d%d",q->name,&q->place.x,&q->place.y);}void myoutprint(Point *q,int n){ int i; for(i=0;i<n;i++,q++) printf("%s/t%d/t%d/n",q->name,q->place.x,q->place.y);}double distance(Point city[],char a[],char b[],int n){ int i; int x,x1; int y,y1; double c; for(i=0;i<n;i++){ if(strcmp(city[i].name,a) == 0){ x = city[i].place.x; y = city[i].place.y; } if(strcmp(city[i].name,b) == 0){ x1 = city[i].place.x; y1 = city[i].place.y; } } c = sqrt((double)((x-x1)*(x-x1) + (y-y1)*(y-y1))); return c;}void closest(Point city[]){ int i=0,j=0; double min = distance(city,city[0].name,city[1].name,n); double c = 0; char M[5],N[5]; for(i=0;i<n;i++){ for(j=i+1;j<n;j++){ c = distance(city,city[i].name,city[j].name,n); if(c<min){ min = c; strcpy(M,city[i].name); strcpy(N,city[j].name); } } } printf("/n最近的兩個坐標是:%s和%s的距離是:%.3f",M,N,min);}double luJin(Point city[],char array[],int n){ int i,j; char a[5] ; char b[5] ; double K=0; static double sum[6]; for(i=0;i<4;i++){ a[0] = array[i]; a[1] = "/0"; b[0] = array[i+1]; b[1] = "/0"; sum[i] = distance(city,a,b,n); K += sum[i];// printf("%.3f/n",sum[i]);// printf("總里程%.3f/n",K); } printf("總里程%.3f/n",K);} void disAll(Point city[]){ int i,j,k=0; static double num[10],temp; for(i=0;i<n;i++){ for(j=i+1;j<n;j++){ num[k] = distance(city,city[i].name,city[j].name,n); printf("num[%d]=%.3f/n",k,num[k]); k++; } } printf("/n**********************/n"); for(i=0;i<10;i++){ for(j=0;j<10-i-1;j++){ if(num[j] > num[j+1]){ temp = num[j+1]; num[j+1] = num[j]; num[j] = temp; } } } for(i=0;i<10;i++){ printf("num[%d]=%.3f/n",i,num[i]); } printf("/n**********************/n"); printf("num[%d]=%.3f/n",9/2,num[9/2]); printf("num[%d]=%.3f/n",9/2+1,num[9/2+1]); }
結果描述:
要是要求模塊功能簡單,那就把我的代碼注釋幾行即可;
第30行和第106行注釋掉
效果顯示如下
詳解請關注牛牛,私聊給你過程解析!
但是為了讓各位同學有優秀的編程能力,增強動手能力,此代碼雖然是完整程序,還是請先獨立思考,再拿此程序作為參考,相信你會有更好的解題過程,要是有不妥之處,各位請多多指正,多多包涵
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/123499.html
摘要:知識點部分簡單的說一下我這個城市選擇組件和其中的一下知識點后臺我用起了一個后臺服務,使用的框架,完成滿足了我的需求。還有倆個基礎組件,分別是滾動組件和城市組件。子組件模板必須包含至少一個插口,否則父組件的內容將會被丟棄。 借用了兩個已經久經考驗的輪子:fastClick和better-scroll,介意可以就此打住。本文絕對原創,手打,思路清晰,知識不難,不適合大佬觀看,謝謝。 ...
摘要:知識點部分簡單的說一下我這個城市選擇組件和其中的一下知識點后臺我用起了一個后臺服務,使用的框架,完成滿足了我的需求。還有倆個基礎組件,分別是滾動組件和城市組件。子組件模板必須包含至少一個插口,否則父組件的內容將會被丟棄。 借用了兩個已經久經考驗的輪子:fastClick和better-scroll,介意可以就此打住。本文絕對原創,手打,思路清晰,知識不難,不適合大佬觀看,謝謝。 ...
摘要:知識點部分簡單的說一下我這個城市選擇組件和其中的一下知識點后臺我用起了一個后臺服務,使用的框架,完成滿足了我的需求。還有倆個基礎組件,分別是滾動組件和城市組件。子組件模板必須包含至少一個插口,否則父組件的內容將會被丟棄。 借用了兩個已經久經考驗的輪子:fastClick和better-scroll,介意可以就此打住。本文絕對原創,手打,思路清晰,知識不難,不適合大佬觀看,謝謝。 ...
摘要:我會使用一個先進的神經網絡和機器學習框架這個框架,并向你們展示如何用這個框架來實現光學字符辨識,模擬退火法,遺傳算法和神經網絡。歐氏距離我們從歐氏距離開始談起,歐氏距離是一個非常簡單的概念,適用于不同的機器學習技術。 歡迎大家前往云+社區,獲取更多騰訊海量技術實踐干貨哦~ 下載 heaton-javascript-ml.zip - 45.1 KB 基本介紹 在本文中,你會對如何使用Ja...
閱讀 3329·2021-11-16 11:45
閱讀 4406·2021-09-22 15:38
閱讀 2848·2021-09-22 15:26
閱讀 3357·2021-09-01 10:48
閱讀 857·2019-08-30 15:56
閱讀 727·2019-08-29 13:58
閱讀 1495·2019-08-28 18:00
閱讀 2169·2019-08-27 10:53