int display( int y, char *str ) // 在屏幕指定行显示一行数据 { clreol(); // 清除一行 gotoxy( 1, y ); // 光标移动到行首 printf( str ); fflush( stdout ); return 0;
}
int append() // 在当前光标下加入一空行
{ int i; int nr;
// 编辑记录在缓冲区中行号
nr = edit.shiney - 1 + edit.scry; if( edit.allrec >= MAXROW ) {// 编辑行数越界
display( 25, \Too many lines\ return -1; }
for( i = edit.allrec; i > nr + 1; i-- )
// 数据后移一行
memcpy( edit.info[i], edit.info[i-1], MAXCOL + 1 );
memset( edit.info[nr+1], 0, MAXCOL + 1 ); // 在光标后插入一空行 edit.allrec++;
if( edit.shiney >= 24 ) { // 光标所在位置为屏幕最后一行 edit.shiney = 24; edit.scry++; // 屏幕下移一行 } else edit.shiney++; // 光标下移一行 refresh_scr();
// 刷新屏幕
return 0;
}
int search( char *str ) // 查找文件中匹配字段,返回0: 查找成功 { int i, j, len, cmplen; len = strlen( str ); if( len == 0 ) // 无查找内容 return -1; j = edit.shinex;
for( i = edit.scry + edit.shiney - 1; i < edit.allrec; i++ ) {
88
cmplen = strlen( edit.info[i] ) - len; for( ; j <= cmplen; j++ ) if( strncmp( edit.info[i] + j, str, len ) == 0 ) break; if( j <= cmplen ) // 查到匹配字段 break;
j = 0; }
if( i == edit.allrec )
// 搜索到文件尾,表示查找失败
return -1;
if( i >= edit.scry && i < edit.scry + 24 ) { // 匹配的内容在当前屏幕内 edit.shinex = j + 1; edit.shiney = i + 1 - edit.scry; gotoxy( edit.shinex, edit.shiney ); } else { // 匹配的内容不在当前屏幕 edit.shinex = j + 1; edit.shiney = 1; edit.scry = i; refresh_scr(); }
return 0;
}
89
实验4 旅游路线安排模拟系统
[参考程序]: #include
#define max 1000 typedef int array[n][n]; array a,b,c,d; int path[n],s[n]; int p(array b, int *m) {
int pi,pj,pk; *m=0;
For(pi=0;pi pk=max; for(pj=0;pj if((pk>0)&&(pk!=max)) { *m=*m+pk; For(pj=0;pj b[pi][pj]=b[pi][pj]-pk; } } for(pj=0;pj pk=max; for(pi=0;pi if((pk>0)&&(pk!=max)) { *m=*m+pk; for(pi=0;pi 90 b[pi][pj]=b[pi][pj]-pk; } } return; } main() { int i,j,k,min,m1,m,jj,kk,si,sj; printf(“\\n input travelling expenses table:”); printf(“\\n”); for(i=0;i scanf(“%d”,&a[i][j]); for(i=0;i path[0]=0; i=0; s[0]=max; for(j=1;j m1=max; for(j=0;j if((s[j]==0)&&(b[i][j]!=max)) { for(si=0;si c[i][kk]=max; c[kk][j]=max; }