考试排名

模拟题啊,wa了好几次,原来是没有看清题意,悲剧啊。。

不过做模拟题还是有意思啊。。还有通过这道题发现自己真的不太擅长字符串处理,开始搞错了,最后为了出错,写得代码有点多。。

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>struct node {    int ac;    char name[40];    int sum;}T[1010];char mark1[10],mark2[10];int x;int find ( char *s ){       int i, k = 0, flag = 0, flag1 = 0, l = 0;    for ( i = 0;i < strlen(s); ) {                if (s[i-1] == '('&& i!= 0) {                while ( s[i] != ')' && s[i] != '\0' )                 mark1[k++] = s[i++],                flag  = 1;            }            else              {                 if ( !flag1)                while(s[i] != '(' && s[i] != '\0' )                   mark2[l++] = s[i++],flag1 = 1;                i++;             }                   }      if(flag1) {                    mark2[l] = '\0';                    x = atoi(mark2);                                    }     if (flag) {             mark1[k] = '\0';             k = atoi(mark1);             return k;     }            return 0;}void init( ){    memset(T, 0, sizeof(T));}int cmp(const void *a, const void *b){                             if ((*(node *)a).ac != (*(node *)b).ac )       return     (*(node *)b).ac - (*(node *)a).ac;    if ((*(node *)a).sum != (*(node *)b).sum )    return  (*(node  *)a).sum - (*(node *)b).sum;    return    strcmp((*(node  *)a).name,(*(node *)b).name); }int main( ) {          #ifdef P        freopen("in","r",stdin);        freopen("out","w",stdout);    #endif        int N, G, i, j, k, m, n;    char str[20];    while (scanf("%d%d", &N, &G) != EOF) {         i = 0;          init( );         n = 0;        // for (m = 0; m < 6; m++) {         while (scanf("%s",T[i].name)!= EOF) {            // scanf("%s",T[i].name);             n++;             for ( j = 1; j <= N; j++) {                  scanf("%s",str);             if (str[0] == '-' || str[0] == '0'  )                    continue;                 k = find (str);                 T[i].ac++;                 if (k == 0 )                    T[i].sum += x;                 else                     T[i].sum += k * G + x;             }             i++;         }         qsort(T,n, sizeof(T[0]),cmp);         for (i = 0; i < n; i++)             printf("%-10s %2d %4d\n",T[i].name, T[i].ac, T[i].sum);    }    return 0;}

原文链接: https://www.cnblogs.com/tangcong/archive/2011/07/20/2111415.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/29042

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午6:27
下一篇 2023年2月8日 上午6:27

相关推荐