华为OD 笔试题

华为OD 笔试题

  • 题目大意
    • 例如

题目大意

磁盘的容量单位有M、G、T,其关系为 1T = 1000G、1G = 1000M,如样例所示先输入磁盘的个数,再依次输入磁盘的容量大小,然后按照从小到大的顺序对磁盘容量进行排序并输出。

例如

输入3
20M
1T
300G
输出
20M
300G
1T

// An highlighted block
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int str_to_int (char * buf) {
    if (buf[strlen(buf)-1] == 'M') {
        buf[strlen(buf)-1] = 0;
        return atoi(buf);
    } else if (buf[strlen(buf)-1] == 'G') {
        buf[strlen(buf)-1] = 0;
        return atoi(buf) * 1000;
    } else if (buf[strlen(buf)-1] == 'T') {
        buf[strlen(buf)-1] = 0;
        return atoi(buf) * 1000000;
    }
    return 0;
}
void selection_sort(int arr[], int n) {
    int i,j;
    int tmp;
    for (i = 0; i < n-1; i++)
        for (j = i+1; j<n; j++)
            if(arr[i] > arr[j]) {
                tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
    for (i = 0; i < n; i++) {
        if (arr[i] >= 1000) {
            if (arr[i] >=1000000)
                printf("%d%c\n", arr[i]/1000000, 'T');
            else
                printf("%d%c\n", arr[i]/1000, 'G');
         }
         else
             printf("%d%c\n", arr[i], 'M');
    }
}
int main () {
int n, i = 0;
int all[1000]= {0};
scanf("%d",&n);
    for (i = 0; i < n; i++){
        char buf[10] = {0};
        scanf("%s", buf);
        all[i] = str_to_int (buf);
    }
    selection_sort(all,n);
}

记住教训。。。。

你可能感兴趣的:(liunx)