有點硬幹
想知道其他方法
#include <stdio.h>
int main(void) {
int N, n, M, m, a[M], b[M], k[M], sum, temp=0, temp1=0, temp2=0, p;
int Bm, Bs, A;
scanf("%d", &N);
for (n=1; n<=N; n++) {
scanf("%d", &M);
for (m=0, sum=0; m<M; m++) {
scanf("%d %d", &a[m], &b[m]);
k[m]=60*a[m]+b[m];
sum+=k[m];
}
A=sum/M;
for (p=2; p<=M; p++) {
if (k[M-1]>k[M-p]) {
temp=k[M-p];
k[M-p]=k[M-1];
k[M-1]=temp;
temp1=a[M-p];
a[M-p]=a[M-1];
a[M-1]=temp1;
temp2=b[M-p];
b[M-p]=b[M-1];
b[M-1]=temp2;
}
}
Bm=a[M-1];
Bs=b[M-1];
printf("Track %d:", n);
printf("\n");
printf("Best Lap: %d minute(s) %d second(s).", Bm, Bs);
printf("\n");
printf("Average: %d minute(s) %d second(s).", A/60, A%60);
printf("\n");
}
return 0;
}
有點硬幹
想知道其他方法
#include
int main(void) {
int N, n, M, m, a[M], b[M], k[M], sum, temp=0, temp1=0, temp2=0, p;
int Bm, Bs, A;
scanf("%d", &N);
for (n=1; n<=N; n++) {
scanf("%d", &M);
for (m=0, sum=0; m<M; m++) {
scanf("%d %d", &a[m], &b[m]);
k[m]=60*a[m]+b[m];
sum+=k[m];
}
A=sum/M;
for (p=2; p<=M; p++) {
if (k[M-1]>k[M-p]) {
temp=k[M-p];
k[M-p]=k[M-1];
k[M-1]=temp;
temp1=a[M-p];
a[M-p]=a[M-1];
a[M-1]=temp1;
temp2=b[M-p];
b[M-p]=b[M-1];
b[M-1]=temp2;
}
}
Bm=a[M-1];
Bs=b[M-1];
printf("Track %d:", n);
printf("\n");
printf("Best Lap: %d minute(s) %d second(s).", Bm, Bs);
printf("\n");
printf("Average: %d minute(s) %d second(s).", A/60, A%60);
printf("\n");
}
return 0;
}
我剛剛看了你的code 覺得有點多此一舉(先說,我沒有測試)
你的 a array 是 分 b array 是秒 k array 是總秒數 對吧?
你既然都換成秒了 ,為什麼還要找最小分(Bm)和最小秒(Bs) (此處最小是最佳意思,我知道秒不一定是最小的)
直接找最小總秒不就好了,接著再 /60 %60 不就是Bm 和 Bs 了嗎?
此外,你可以考慮用 min 和 sec 來代替陣列,這樣好處是減少資料容量,壞處是不能保留原始資料,這點你自己斟酌。