PAT基础题目

PAT基础题目

PAT(Programming Ability Test) 是浙大计算机学院组织的计算机能力考试,方式和 acm 类似,但是和 acm 竞赛选拔的宗旨不大一样,PAT 是计算机能力测试,为一个程序猿的编程能力提供一个参考标准。下面是 PAT 练习的简单题目部分,一共 15 道,重点不在数据结构和算法练习,而是考查程序猿能不能全面的考虑测试用例,特别是一些 special case 的处理。

题目列表

  1. 3n+1 问题:如果 n 是一个偶数,那么 n/2;如果是一个奇数那么 (3n+1)/2;然后对于较小的 n 继续这样计算。3n+1 猜想是对于任意一个正整数 n 最后都会终止于 1 。现在给一个 n 问经过多少步会变成 1 ;比如 3 的计算序列是 5 8 4 2 1,变成 1 需要 5 步。
  2. 给一个很大的数,比如 1234567890987654321123456789 计算数字和,然后使用拼音表示结果,比如这里的结果是:yi san wu,也就是 135 。
  3. 现在给字符串定一些规则:
    • 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
    • 任意形如 xPATx 的字符串都是合法的,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
    • 如果 aPbTc 是合法的,那么 aPbATca 也是合法的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
    然后给 u 很多字符串,给出是否合法的 Yes 或 No 的回答。比如 APATA 是合法的,APAATAA 也是合法的,PBT 是不合法的。
  4. 给一些学生的姓名、学号和成绩,给出成绩最高和最低的学生姓名以及学号。
  5. 继续 3n+1问题:对于 n = 3 的计算序列是 3 5 8 4 2 1,最前面的 3 是后面数字的“覆盖数”;一个序列中不能被其他数字覆盖的叫“关键数”。现在就是给 u 一个序列,找出关键数,并按从大到小的顺序输出。比如 3 5 6 7 8 11 的关键数结果是 7 6。
  6. 将一个 < 1000 整数换个形式输出,比如 234 对应输出 BBSSS1234,B 对应一个“百”,S 对应一个“十”,1234 对应 “4”。23 的输出是:SS123。
  7. 孪生素数猜想:诸如 3 5、5 7、11 13 、17 19 这样相邻的素数有无穷多对(相邻 ? 因为除了 2 之外所有的素数都是奇数,这里的相邻就是说的相邻的奇数)。现在给 u 一个 N (< 105),问 N 以内的孪生素数一共有多少对? N = 20 时有 4 对。
  8. 循环数组:将一个数组循环偏移一个指定长度后输出,比如 1 2 3 4 5 偏移 2 个位置输出 4 5 1 2 3。
  9. 反着说话:将字符串 hello world I am cat 输出成 cat am I world hello 。
  10. 求导:比如一个一元多项式 y = 2x3+3x+2 表示成 2 3 3 1 2 0;现在要 u 给出对应的求导形式的结果表示,比如这里是:6 2 3 0。
  11. A+B 问题:给三个可能比较大的 A、B 和 C,问 A+B 是否比 C 大,true or false ? A, B, C ∈ [-231, 231] 。
  12. 将输入的一些整数分类输出:
    • A1 = 能被5整除的数字中所有偶数的和;
    • A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
    • A3 = 被5除后余2的数字的个数;
    • A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
    • A5 = 被5除后余4的数字中最大数字。
    如果没有对应的分类的数,输出 N 。
  13. 数数素数:令 Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出 PM 到 PN 的所有素数。
  14. 福尔摩斯的约会:大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。
  15. 德才论:输入第1行给出3个正整数,分别为:N(<=105),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线L的考生也按总分排序,但排在第三类考生之后。随后N行,每行给出一位考生的信息,包括:准考证号、德分、才分,其中准考证号为8位整数,德才分为区间[0, 100]内的整数。数字间以空格分隔。输出第1行首先给出达到最低分数线的考生人数M,随后M行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。

题目简单分析

题目分析

第 1 题( 1001 )

这道题目比较简单,一个循环就可以搞定。不过问题是,对于 /2 这样的操作,直接右移一位 >> 1 可能会更好一点。

第 2 题( 1002 )

这道题目也比较简单,不过要注意这样的数字串,当个字符串处理会更好;而要将 0 映射为 "zero"、1 映射为 "one" ,使用一个字符串数组比较合适。

第 3 题( 1003 )

这道题目关键是找出来合法的字符串的表示形式:Ak P An T Akn (k ≥ 0, n > 0)。实现思路当然就多了,主要是统计 P 之前的 A 的个数,T 之后 A 的个数和 P、T 之间 A 的个数,然后满足关系即可。

第 4 题( 1004 )

略。

第 5 题( 1005 )

一个数比如 3 是关键数就是它前面的 6 不能在给的数中或是可以由给的数变成。不过 8 前面可能是 16 或是 5。所以 me 们可以将给的一些数以及所有它们可以变成的数放到一个 set 中去,然后再重新遍历一遍给的数,如果它们前面的数不在set 中,那么就是关键数。

第 6 题( 1006 )

略。

第 7 题( 1007 )

问题的关键是如何计算出 100000 以内的素数问题。10000 以内的数的判断可以使用 100 以内的素数判断,所以 me 们可以先枚举 100 以内的 25 个素数,然后计算 10000 以内的素数,然后计算 100000 以内的素数。素数表生成了,该问题就基本解决了。100 以内有 25 个素数, 10000 以内有 1229 个素数,100000 以内大概有 9592 个。

第 8 题( 1008 )

比较简单。

第 9 题( 1009 )

比较简单。

第 10 题( 1010 )

本题思路简单,但是总有一些特殊情况需要考虑。特别是对于常数 a 的求导结果为 0 的特殊情况 !

第 11 题( 1011 )

主要是 A+B 的结果可能超过 32 位整数,所以使用 long long 基本就可以了。

第 12 题( 1012 )

繁琐,O__O"…

第 13 题( 1013 )

重点还是素数表的问题,这里需要构建前 10000 个素数,第 7 题 10w 以内的素数还不够。

第 14 题( 1014 )

赶脚题目描述有些不清,它说的“一对”,实际上是指对应位置上的对,也就是比如都是第 7 个字符;还有就是特殊情况的考虑。

第 15 题( 1015 )

题目主要是如何排序的问题,sort 或是 qsort 函数应该都不陌生,主要就是比较函数书写。


1-5 题代码

1-5 题代码

第 1 题( 1001 )

  1. #include
  2.  
  3. int main ( )
  4. {
  5.      int n,  count  =  0 ;
  6.    
  7.      scanf ( "%d"&n ) ;
  8.      while (! =  1 ) {
  9.         n  = n & 1  ?  ( 3 *n + 1 ) >> 1  :  (>>  1 ) ;
  10.          ++count ;
  11.      }
  12.      printf ( "%d\n", count ) ;
  13.    
  14.      return  0 ;
  15. }

第 2 题( 1002 )

  1. #include
  2.  
  3. int main ( )
  4. {
  5.      char str [ 105 ]*pch ;
  6.      char  *table [ ]  =  { "ling""yi""er""san""si""wu""liu""qi""ba""jiu" } ;
  7.      int n ;
  8.    
  9.      scanf ( "%s"&str ) ;
  10.    
  11.      for (pch =str, n = 0 ;  *pch ;  ++pch )
  12.         n  + =  *pch - '0' ;
  13.        
  14.      if (n / 100 )
  15.          printf ( "%s ", table [n / 100 ] ) ;
  16.      if (n / 10 )
  17.          printf ( "%s ", table [n / 10 % 10 ] ) ;
  18.      printf ( "%s\n", table [n % 10 ] ) ;
  19.    
  20.      return  0 ;
  21. }

第 3 题( 1003 )

  1. #include
  2.  
  3. int test_ok ( char  *pat )
  4. {
  5.      char  *p,  *t,  *end ;
  6.  
  7.      for (p =pat ;  *&&  *p == 'A' ;  ++p )
  8.          ;
  9.      if ( *p ! = 'P' )
  10.          return  0 ;
  11.      for (t =p + 1 ;  *&&  *t == 'A' ;  ++t )
  12.          ;
  13.      if ( *t ! = 'T' )
  14.          return  0 ;
  15.      for (end =t + 1 ;  *end  &&  *end == 'A' ;  ++end )
  16.          ;
  17.      if ( *end  ! =  '\0' )
  18.          return  0 ;
  19.      if (t >p + 1  && end -t - 1  ==  (t -p - 1 ) * (p -pat ) )
  20.          return  1 ;
  21.      else
  22.          return  0 ;
  23. }
  24.  
  25. int main ( )
  26. {
  27.      char pat [ 105 ] ;
  28.      int i, n ;
  29.    
  30.      scanf ( "%d"&n ) ;
  31.      for (i = 0 ; i <n ;  ++i ) {
  32.          scanf ( "%s", pat ) ;
  33.          printf ( "%s\n", test_ok (pat )  ?  "YES"  :  "NO" ) ;
  34.      }
  35.    
  36.      return  0 ;
  37. }

第 4 题( 1004 )

  1. #include
  2. #include
  3.  
  4. int main ( )
  5. {
  6.      int score, min, max ;
  7.      char name [ 15 ], id [ 15 ], name_min [ 15 ], id_min [ 15 ], name_max [ 15 ], id_max [ 15 ] ;
  8.      int i, n ;
  9.    
  10.      scanf ( "%d"&n ) ;
  11.      for (i = 0, min = 101, max = - 1 ; i <n ;  ++i ) {
  12.          scanf ( "%s %s %d", name, id,  &score ) ;
  13.          if (score <min ) {
  14.             min  = score ;
  15.              strcpy (name_min, name ) ;
  16.              strcpy (id_min, id ) ;
  17.          }
  18.          if (score >max ) {
  19.             max  = score ;
  20.              strcpy (name_max, name ) ;
  21.              strcpy (id_max, id ) ;
  22.          }
  23.      }
  24.      printf ( "%s %s\n%s %s\n", name_max, id_max, name_min, id_min ) ;
  25.    
  26.      return  0 ;
  27. }

第 5 题( 1005 )

  1. #include
  2. #include
  3. #include
  4. using  namespace std ;
  5.  
  6. int cmp_desc ( int a,  int b )
  7. {
  8.      return b <a ;
  9. }
  10.  
  11. int main ( )
  12. {
  13.      int i, k, n, x ;
  14.     map < intint > table ;
  15.      int data [ 105 ], res [ 105 ] ;
  16.    
  17.      cin  >> n ;
  18.      for (i = 0 ; i <n ;  ++i ) {
  19.          cin  >> data [i ] ;
  20.         x  = data [i ] ;
  21.          while (x ! = 1 ) {
  22.             table [x ]  = x & 1  ?  ( 3 *x + 1 ) >> 1  : x >> 1 ;
  23.             x  = table [x ] ;
  24.          }
  25.      }
  26.    
  27.      for (k =i = 0 ; i <n ;  ++i ) {
  28.         x  = data [i ] ;
  29.          if (table [x * 2 ]  ==  0  &&  ( ( 2 *x - 1 ) % 3  ! =  0  || table [ ( 2 *x - 1 ) / 3 ]  ==  0 ) )
  30.             res [k ++ ]  = x ;
  31.      }
  32.    
  33.     sort (res, res +k, cmp_desc ) ;
  34.    
  35.      for (i = 0 ; i <k ;  ++i )
  36.          cout  << res [i ]  <<  (i ==k - 1 ? '\n' : ' ' ) ;
  37.    
  38.      return  0 ;
  39. }


6-10题代码

6-10 题代码

第 6 题( 1006 )

  1. #include
  2.  
  3. int main ( )
  4. {
  5.      int i, n, t ;
  6.    
  7.      scanf ( "%d"&n ) ;
  8.        
  9.      if (= n / 100 ) {
  10.          for (i = 0 ; i <t ;  ++i )
  11.              putchar ( 'B' ) ;
  12.      }
  13.      if (n / 10  &&  (t =n / 10 % 10 ) ) {
  14.          for (i = 0 ; i <t ;  ++i )
  15.              putchar ( 'S' ) ;
  16.      }
  17.     t  = n % 10 ;
  18.      for (i = 1 ; i <=t ;  ++i )
  19.          putchar ( '0' +i ) ;
  20.    
  21.      putchar ( '\n' ) ;
  22.      return  0 ;
  23. }

第 7 题( 1007 )

  1. #include
  2.  
  3. int prime [ 10005 ]  =  { 02357111317192329313741434753596167717379838997 } ;
  4.  
  5. int ge_prime ( int p [ ]int nth,  int max )
  6. {
  7.      int i, j, n ;
  8.    
  9.      for (n =nth, i =p [nth ] + 1 ; i <=max ;  ++i ) {
  10.          for (j = 1 ; j <=nth ;  ++j ) {
  11.              if (i %p [j ]  ==  0 )
  12.                  break ;
  13.          }
  14.          if (j >nth ) {
  15.             p [ ++n ]  = i ;
  16.          }
  17.      }
  18.      return n ;
  19. }
  20.  
  21. int main ( )
  22. {
  23.      int i, n, count ;
  24.      int res  =  0 ;
  25.     count  = ge_prime (prime,  2510000 ) ;
  26.      // printf("%d\n", count);
  27.     count  = ge_prime (prime, count,  100000 ) ;
  28.      //printf("%d\n", count);
  29.      scanf ( "%d"&n ) ;
  30.    
  31.      for (i = 2 ; i <=count  && prime [i ] <=n ;  ++i )
  32.          if (prime [i ] -prime [i - 1 ]  ==  2 )
  33.              ++res ;
  34.      printf ( "%d\n", res ) ;
  35.    
  36.      return  0 ;
  37. }

第 8 题( 1008 )

  1. #include
  2.  
  3. int main ( )
  4. {
  5.      int i, m, n ;
  6.      int data [ 105 ] ;
  7.    
  8.      scanf ( "%d %d"&n,  &m ) ;
  9.    
  10.      for (i = 0 ; i <n ;  ++i )
  11.          scanf ( "%d"&data [i ] ) ;
  12.    
  13.      for (i = 0 ; i <n ;  ++i )
  14.          printf ( "%d%c", data [ (n -m %n +i ) %n ], i ==n - 1 ?  '\n' :  ' ' ) ;
  15.    
  16.      return  0 ;
  17. }

第 9 题( 1009 )

  1. #include
  2.  
  3. int main ( )
  4. {
  5.      char words [ 80 ] [ 80 ] ;
  6.      int i, size ;
  7.    
  8.      for (size = 0 ;  scanf ( "%s", words [size ] )  ! =  EOF ;  ++ size )
  9.          ;
  10.    
  11.      for (i =size - 1 ; i >= 0 ;  --i )
  12.          printf ( "%s%c", words [i ], i  ?  ' '  :  '\n' ) ;
  13.    
  14.      return  0 ;
  15. }

第 10 题( 1010 )

  1. #include
  2.  
  3. int main ( )
  4. {
  5.      int a, p, first = 1 ;
  6.    
  7.      while ( scanf ( "%d %d"&a,  &p )  ! =  EOF ) {
  8.          if (p ) {
  9.             first  ? first  =  0  :  putchar ( ' ' ) ;
  10.              printf ( "%d %d", a *p, p - 1 ) ;
  11.          } else  if (first ) {
  12.              if ( scanf ( "%d %d"&a,  &p )  ==  EOF ) {
  13.                  printf ( "0 0" ) ;
  14.                  break ;
  15.              } else {
  16.                 first  =  0 ;
  17.                  printf ( "%d %d", a *p, p - 1 ) ;
  18.              }
  19.          }
  20.      }
  21.      putchar ( '\n' ) ;
  22.    
  23.      return  0 ;
  24. }


11-15 题代码

11-15 题代码

第 11 题( 1011 )

  1. #include
  2.  
  3. int main ( )
  4. {
  5.      long  long a, b, c ;
  6.      int i, n ;
  7.    
  8.      scanf ( "%d"&n ) ;
  9.    
  10.      for (i = 0 ; i <n ;  ++i ) {
  11.          scanf ( "%lld %lld %lld"&a,  &b,  &c ) ;
  12.          printf ( "Case #%d: %s\n", i + 1, a +b >c ? "true" : "false" ) ;
  13.      }
  14.    
  15.      return  0 ;
  16. }

第 12 题( 1012 )

  1. #include
  2.  
  3. int main ( )
  4. {
  5.      int i, n, x, sign, count  =  0, flag2 = 0, flag4 = 0 ;
  6.      int r1, r2, r3, r4, r5 ;
  7.  
  8.     r4  = r1  = r2  = r3  = r4  = r5  =  0 ;
  9.     sign  =  1 ;
  10.    
  11.      scanf ( "%d"&n ) ;
  12.      for (i = 0 ; i <n ;  ++i ) {
  13.          scanf ( "%d"&x ) ;
  14.          if (x % 10  ==  0 )
  15.             r1  + = x ;
  16.          if (x % 5  ==  1 ) {
  17.             r2  + = x *sign ;
  18.             sign  =  -sign ;
  19.             flag2  =  1 ;
  20.          }
  21.          if (x % 5  ==  2 )
  22.              ++r3 ;
  23.          if (x % 5  ==  3 ) {
  24.              ++count ;
  25.             r4  + = x ;
  26.             flag4  =  1 ;
  27.          }
  28.          if (x % 5  ==  4  && x >r5 ) {
  29.             r5  = x ;
  30.          }
  31.      }
  32.     r1  ! =  0  ?  printf ( "%d ", r1 )  :  printf ( "N " ) ;
  33.     flag2  ! =  0  ?  printf ( "%d ", r2 )  :  printf ( "N " ) ;
  34.     r3  ! =  0  ?  printf ( "%d ", r3 )  :  printf ( "N " ) ;
  35.     flag4  ! =  0  ?  printf ( "%0.1f "1.0 *r4 /count )  :  printf ( "N " ) ;
  36.     r5  ! =  0  ?  printf ( "%d\n", r5 )  :  printf ( "N\n" ) ;
  37.    
  38.      return  0 ;
  39. }

第 13 题( 1013 )

  1. #include
  2.  
  3. int prime [ 10005 ]  =  { 02357111317192329313741434753596167717379838997 } ;
  4.  
  5. int ge_prime ( int p [ ]int nth,  int max )
  6. {
  7.      int i, j, n ;
  8.    
  9.      for (n =nth, i =p [nth ] + 1 ; i <=max ;  ++i ) {
  10.          for (j = 1 ; j <=nth ;  ++j ) {
  11.              if (i %p [j ]  ==  0 )
  12.                  break ;
  13.          }
  14.          if (j >nth ) {
  15.             p [ ++n ]  = i ;
  16.          }
  17.      }
  18.      return n ;
  19. }
  20.  
  21. int main ( )
  22. {
  23.      int i, m, n, count ;
  24.    
  25.     count  = ge_prime (prime,  2510000 ) ;
  26.      // printf("%d\n", count);
  27.     count  = ge_prime (prime, count,  104729 ) ;
  28.      // printf("%d\n", count);
  29.    
  30.      scanf ( "%d %d"&m,  &n ) ;
  31.      for (i =m ; i <=n ;  ++i ) {
  32.          printf ( "%d%c", prime [i ](i -m ) % 10 == 9  || i  ==?  '\n'  :  ' ' ) ;
  33.      }
  34.    
  35.      return  0 ;
  36. }

第 14 题( 1014 )

  1. #include
  2. #include
  3. #define NMAX 65
  4.  
  5. int main ( )
  6. {
  7.      char a1 [NMAX ], b1 [NMAX ], a2 [NMAX ], b2 [NMAX ] ;
  8.      const  char  *table [ ]  =  { "MON""TUE""WED""THU""FRI""SAT""SUN" } ;
  9.      char  *p,  *q ;
  10.      int v ;
  11.    
  12.      scanf ( "%s %s %s %s", a1, b1, a2, b2 ) ;
  13.    
  14.      for (p =a1, q =b1 ;  *&&  *q ;  ++p,  ++q )
  15.          if ( *==  *&&  *>=  'A'  &&  *<=  'G' )
  16.              break ;
  17.  
  18.      printf ( "%s ", table [ *p - 'A' ] ) ;
  19.    
  20.      for ( ++p,  ++q ; *&&  *q ;  ++p,  ++q )
  21.          if ( *==  *&&  ( isdigit ( *p )  ||  *>=  'A'  &&  *<=  'N' ) )
  22.              break ;
  23.     v  =  isdigit ( *p )  ?  *p - '0'  :  *p - 'A' + 10 ;
  24.      printf ( "%02d:", v ) ;
  25.    
  26.      for (p =a2, q =b2 ;  *&&  *q ;  ++p,  ++q )
  27.          if ( *==  *&&  isalpha ( *p ) )
  28.              break ;
  29.    
  30.     v  = p  - a2 ;
  31.      printf ( "%02d\n", v ) ;
  32.    
  33.      return  0 ;
  34. }

第 15 题( 1015 )

  1. #include
  2. #include
  3. #include
  4. #include
  5. using  namespace std ;
  6.  
  7. typedef  struct _tag_student_ {
  8.     string id ;
  9.      int de ;
  10.      int cai ;
  11.      int total ;
  12.      int level ;
  13. }Student ;
  14.  
  15. bool cmp ( const Student & s1,  const Student & s2 )
  16. {
  17.      if (s1. level  < s2. level )     // s1 > s2
  18.          return  1 ;
  19.      else  if (s1. level  > s2. level )     // s1 < s2
  20.          return  0 ;
  21.      else  if (s1. total  > s2. total )     // s1> s2
  22.          return  1 ;
  23.      else  if (s1. total  < s2. total )     // s1 < s2
  24.          return  0 ;
  25.      else  if (s1. de  > s2. de )     // s1 > s2
  26.          return  1 ;
  27.      else  if (s1. de  < s2. de )     // s1 < s2
  28.          return  0 ;
  29.      else
  30.          return s1. id  < s2. id ;
  31. }
  32.  
  33. Student ss [ 100005 ] ;
  34.  
  35. int main ( )
  36. {
  37.      int i, n, low, high, size ;
  38.      char sid [ 10 ] ;
  39.     Student st ;
  40.    
  41.      scanf ( "%d %d %d"&n,  &low,  &high ) ;
  42.    
  43.      for (size  = i  =  0 ; i  < n ;  ++i ) {
  44.          scanf ( "%s %d %d", sid,  &st. de&st. cai ) ;
  45.         st. id  = sid ;
  46.        
  47.         st. total  = st. de  + st. cai ;
  48.          if (st. de  >= high  && st. cai  >= high )
  49.             st. level  =  1 ;
  50.          else  if (st. de  >= high  && st. cai  >= low  && st. cai  < high )
  51.             st. level  =  2 ;
  52.          else  if (st. de  >= low  && st. de  < high  && st. cai  >= low  && st. cai  < high  && st. de  >= st. cai )
  53.             st. level  =  3 ;
  54.          else  if (st. de  >= low  && st. cai  >= low )
  55.             st. level  =  4 ;
  56.          else
  57.             st. level  =  5 ;
  58.        
  59.          if (st. level  ! =  5 )
  60.             ss [size ++ ]  = st ;
  61.      }
  62.    
  63.     sort (ss, ss +size, cmp ) ;
  64.  
  65.      printf ( "%d\n", size ) ;
  66.    
  67.      for (i = 0 ; i <size ;  ++i ) {
  68.          printf ( "%s %d %d\n", ss [i ]. id. c_str ( ), ss [i ]. de, ss [i ]. cai ) ;
  69.      }
  70.    
  71.      return  0 ;
  72. }

    原文链接:http://ilovers.sinaapp.com/content/pat%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE

你可能感兴趣的:(PAT基础题目)