2001年度程序员级下午试题._第1页
2001年度程序员级下午试题._第2页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2001年度程序员级下午试题试题一阅读下列程序或函数说明和 C 代码,将应填入_(n)_ 处的字句写在答题 纸的对应栏内。 函数 1.1 说明 函数 strcmp() 是比较两个字符串 s 和 t 的大小。若 s t, 函数返回正数。 函数 1.1int strcmp(char *s,char *t) while ( *s & *t & _(1)_)s+;t+ ;return _(2)_; 程序 1.2 说明 在 n 行 n 列的矩阵中 , 每行都有最大的数 , 本程序求这 n 个最大数中的 最小一个 程序 1.2#include stdio.h #define N 100in

2、t aNN;void main() int row ,col ,max ,min ,n;/*输入合法 n (100 ),和输入 mxn 个整数到数组 a 的代码略*/for ( row = 0;row n;row+) for ( max = arow0,col = l ;col va1 = v;_(1)_; *p = _(2)_;NODE *reverse_copy(NODE *p) NODE *u;for( u = NULL ; p ; p = p -next ) first_insert(_(3)_); return u;void print_link( NODE *p ) for( ;_

3、(4)_) printf (%dt , p - val); printf(n);void free_link(NODE*p) NODE *u;while( p != NULL) u=p- next;free( p );_(5)_;void main() NODE *link1 , *link2; int i ;linkl = NULL ; for( i = 1;i fsiz)_(1)_ ;fread(buf ,1 , siz , fin ) ; fwrite( buf , 1 , sizfout );fsiz = _(2)_;1int dofile( FILE *fin , FileInfo

4、*inp ) long offset ;FILE *fout ;fname , wb ) ) = NULL) 创建文件错误 : %sn , inp - fname );保留合并文件读 /写位置*/定位于被恢复文件首 */copyfile( fin ,fout , inp - fclose( fout ) ;printf( n-文件名 : %n 文件长 : %1d.n , inp - fname ,inp - length );if ( ( fout = fopen( inp -printf ( return 1 ;offset = _(3)_ ; /*fseek( _(4)_) ; /*len

5、gth ) ;_(5)_;/* 恢复合并文件读 / 写位置 */return 0 ;int main( int argc ,char *argv ) FileInfo finfo ;char fname256 ; FILE *fcmbn;if (argc 2) 或全部 ( argc = 2 ) 原始 文件*/fread( &finfo , 1 , sizeof( FileInfo ) , fCmbn ) ;if ( finfo.length = 0 ) break ;if ( argc 2 & strcmp( finfo.fname , argv2 ) ) continue ;

6、if ( dofile( fcmbn , &finfo ) != 0 ) break ;fclose( fcmbn ) ; return 0 ;试题四阅读下列程序说明和 C 代码,将应填入_(n)_处的字句写在答题纸的对应 栏内。程序 4 说明设一个环上有编号为 0n-1 的 n 粒不同颜色的珠子(每粒珠子颜色用字 母表示 ,n 粒珠子颜色由输入的字符串表示 ) 。以环上某两粒珠子间为断点 , 从断 点一方按顺时针方向取走连续同色的珠子 , 又从断点另一方按逆时针方向对剩下 珠子取走连续同色的珠子 , 两者之和为该断点可取走珠子的粒数。 移动断点 , 能取 走的珠子数不尽相同。 本程序

7、找出可以取走最多的珠子数及断点的位置。 程序中 用双向链表存储字符串。例如 , 编号为 0-9 的 10 粒珠子颜色的字符串为 “ aaabbbadcc, 对应链表为 :若在 2 号与 3 号珠子间为断点 , 共可取走 6 粒珠子 , 且为取走的珠子数最多。 程序 4#include stdio.h #include string.h #include malloc.h typedef struct node char d ;struct node *fpt ; /* 后继指针 */struct node*bpt ; /* 前趋指针 */ NODE ;NODE *building( char

8、*s ) /*生成双向循环链表 */ NODE *p = NULL , *q ;while ( *s )q = ( NODE * ) malloc( sizeof( NODE ) ) ;q - ch = *s+ ;if ( p = NULL ) p = q - fpt = q - b t = q ; else p - bpt - fpt = q ;q - fpt = p ;q - bpt = _(1)_; _(2)_ ; returnint count( NODE *start , int maxn ,int step ) /*求可取走珠子粒数*/ int color ,c ;NODE *p

9、;color = -1 ; C = 0 ;for ( p = start ; c O ? p - fpt ; p -bpt )if ( color = -1 ) color = p - ch ;else if (_(3)_) break ;c+returnint find ( char *s ,int *cutpos ) /*寻找取走珠子数最多的断点和粒数*/ int i , c , cut , maxc = 0 ,1e n = strle n(s);NODE *p ;if ( ( p = building(s) ) = NULL) *cu1tpos = -1 ; return -1 ; i = 0 ;do c = count( p , 1en ,1 );c = c + 一一;if ( c maxc ) maxc = c ; cut = i ; ;i+ ; while (i = 0 ) _(4)_ ;return find( n ,m , _(5)_ ,pd ) ;void main() int n ,m ,k ,i ,pN ,*pptr = p ;int d = 100, 81, 64, 49, 36, 25, 16, 9, 4, 1 ; printf( Enter n , m : ;scanf( %d %d ,&n ,&m ); k = find

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论