数学建模社区-数学中国

标题: 函数大全(m开头) [打印本页]

作者: 韩冰    时间: 2004-10-4 02:57
标题: 函数大全(m开头)
< align=center><FONT color=#0000ff size=3><B><FONT color=#cc0000>函数大全(m开头)</FONT></B></FONT></P>
7 `# [6 h7 X0 }" E* z# J< align=left><FONT color=#ff0000>main()主函数
* D& E4 {, X$ t. N1 F1 p</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某
$ T6 t" r* B; Q/ z8 F% `  O个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放
  ?: F, t* g5 d, ~4 x在哪个地方, 以下几点说明都是适合的。 . ]; R( {% T; X/ C; V% a- p& K
<FONT color=#000099>1. main() 参数 </FONT>7 S: s5 q, b) h; T* Z' F
在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
0 ]( h! {4 ~( D  t/ j  w/ `+ E* argc: 整数, 为传给main()的命令行参数个数。 ; t" J. q& X9 ]" n9 g
* argv: 字符串数组。 3 |4 |8 L5 ^' j
在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0
9 A) i  Y3 o6 t# y" g1 O; F以下的版本, argv[0]为空串("") 。 ( ?2 R8 [0 d9 p' n' K
argv[1] 为在DOS命令行中执行程序名后的第一个字符串;
4 O6 Y& c' k3 s2 Cargv[2] 为执行程序名后的第二个字符串; ) D- v) L, T! Y# q4 m, ?6 u. c
... 3 b3 k( x1 P# y% L; G0 i8 D9 Y
argv[argc]为NULL。 $ ]* P0 F- V6 \3 ~
*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符 & h8 b, z; H' n' k6 }, V
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C:
+ {) |% C- s' E& ]& a$ ^5 l0 ^9 C\TURBOC(对于PATH) 或YES(对于87)。
  E7 _( X3 F5 p$ u5 }  QTurbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中
0 S1 d; [7 w( d/ r; W5 e1 @说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序
/ K# t% p* B6 w8 q- O. a的局部变量。
# f  r" v8 ?' B% N* Y请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
, @1 L% ^! b; ?) i& d+ {. s# i* N的例子: : S/ h3 @- R) z3 W0 Q
<FONT color=#0000ff>main() 2 D* M, |, z1 e, K. ^) y/ W& D
main(int argc)
! V' J4 `2 Q" g# }/ smain(int argc, char *argv[]) 4 D7 o8 |: ]! [- n# G& l
main(int argc, char *argv[], char *env[]) </FONT>
: G% @& o  F* Z, m5 ~5 b( f' D其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
, |# b0 v, Y; k+ _" l2 w" N% q用argv[]的情况。
8 V  d! ]0 d3 p. {; e; U以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
6 V# M: R9 Y, [2 E" ]<FONT color=#0000ff>/*program name EXAMPLE.EXE*/ 3 [; \+ q5 C/ s
#include <STDIO.H>
' f! v" j/ }" v3 ^) c  i! z#include <STDLIB.H>
% C  [. t( ~0 gmain(int argc, char *argv[], char *env[])
6 k, W2 l2 ?9 q8 C1 t) j. H9 q{ 4 B6 h0 L( u. P
int i;
9 j" J$ z  F. b, ^7 O! L- p; Eprintf("These are the %d command- line arguments passed to 5 H# S2 z) _8 P6 x/ ?* E
main:\n\n", argc); & w# s% \, G& W% [
for(i=0; i&lt;=argc; i++) * K5 h, r6 s- w- D! `) k
printf("argv[%d]:%s\n", i, argv); ; s6 h& U4 y+ M+ e
printf("\nThe environment string(s)on this system are:\n\n");
; w, c- k9 q% a3 c- z# m+ [for(i=0; env!=NULL; i++) / l5 c! {, w+ b  r% w, y
printf(" env[%d]:%s\n", i, env);
! ~" W, o# G* i' d8 {7 d- x} </FONT>: s+ V4 k* V6 p. ^' o4 Y
如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: 6 @( b: K6 e6 a3 {6 c
C:\example first_argument "argument with blanks" 3 4 "last but ' R7 s/ O7 q; l# s
one" stop!
0 l7 |# {  r/ e注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument
$ T$ K5 H- u5 f( _: m  z, T$ Lwith blanks"和"Last but one")。 ; g8 X1 R: Y, C1 c# e: f
结果是这样的: " `7 [& z7 H( B, D+ W/ U: G
<FONT color=#0000ff>The value of argc is 7
- N* e3 S/ q! |$ `! A) V6 [. uThese are the 7 command-linearguments passed to main:   u: c* y+ B9 _8 J# S: U: ~- N
argv[0]:C:\TURBO\EXAMPLE.EXE 4 {; `5 G6 a5 e' |9 ]
argv[1]:first_argument
  d+ ]. E+ ^& c$ Xargv[2]:argument with blanks & x, [2 i4 j9 Y
argv[3]:3
- A6 L7 P! A; t5 k5 Q' g0 P) k. G9 ^argv[4]:4 % T, \' P* x' v6 u7 d! l* X4 W( |% W
argv[5]:last but one
4 ^# ?: \; h, Q  i  j4 m6 U0 |argv[6]:stop!
5 X1 J& a" Y) v! Pargv[7]NULL)
! v9 }- F6 A3 [The environment string(s) on this system are:
2 h  {6 z! u5 a6 v# R4 \env[0]: COMSPEC=C:\COMMAND.COM
- F$ {- f/ @/ R* |env[1]: PROMPT=$P$G /*视具体设置而定*/
) H& y( x+ o- e' u: h7 k" {" s- oenv[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ 3 D. @; T- Z. Q4 ], Z
</FONT>% c" }3 j$ x5 H2 k+ s1 M0 ^
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包 , @4 M0 J0 l1 E$ \
括参数间的空格), 这是由DOS 限制的。 4 z4 l: Z  g* c3 ^
</P>/ \& I5 }4 _/ h8 X
<><FONT color=#ff0000>函数名: matherr </FONT>
1 d7 G3 Q: g1 a4 O9 l5 W7 X功 能: 用户可修改的数学错误处理程序
3 |  |4 Z- \% m& Q7 Q  U用 法: int matherr(struct exception *e);
  e4 b; `3 f* X" P( `程序例: </P>; l) P7 h. Y+ ~4 K4 Z4 v9 P
<><FONT color=#0000ff>/* This is a user-defined matherr function that prevents
& F& a/ X: S! W& W3 t4 N5 X9 Jany error messages from being printed. */ </FONT></P>
0 N: w( Y4 q3 z+ M) x. S& e<><FONT color=#0000ff>#include<MATH.H> </FONT></P>, v3 d8 Y7 ^( w/ n8 N7 B
<><FONT color=#0000ff>int matherr(struct exception *a)
& K& M% M6 s' _1 [{ ) ]9 F3 N2 u/ g+ K. N8 C; }
return 1; , R, l& e- R4 C3 r9 l) b9 Q
} - v: u1 x; Q! \9 c! \' T
</FONT>! s, j% [" z3 k2 X; L* v& [6 w
! ~5 d1 @& ?: h3 f4 Z* K' r" w3 O5 d
</P>
) ~6 w  r8 ^8 k1 t<><FONT color=#ff0000>函数名: memccpy </FONT>
% A3 i' _8 F* T5 Z2 C功 能: 从源source中拷贝n个字节到目标destin中
9 Z+ W/ [+ ?7 G, i用 法: void *memccpy(void *destin, void *source, unsigned char ch,
4 k  `: ]) t3 X: {7 }$ L* d7 ?. sunsigned n);
9 ^8 l8 z, W" ?程序例: </P>
( A3 S  }6 T5 N/ x0 z<><FONT color=#0000ff>#include <STRING.H>
0 X' y% B1 E  c#include <STDIO.H></FONT></P>, y' C" Z) w5 j. O. {# R
<><FONT color=#0000ff>int main(void) 2 _5 Y, l5 }: ?/ y
{ % x0 \; D& _0 U& Q% M
char *src = "This is the source string";
' Z5 ?! y2 a. ychar dest[50]; # Q; E! Z. C9 f* B
char *ptr; </FONT></P>
9 b- F6 z. l# ^6 z<><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>9 o, n: s# U. `; i6 J* Q: y
<><FONT color=#0000ff>if (ptr) & _, f* Z. {& r  c
{ 5 X0 |( e- ~! Z3 W% |) b' e
*ptr = '\0';
6 N! X1 i& }! C0 gprintf("The character was found: %s\n", dest); ! T  @: x% I7 S; Q$ O! g
}
, o# j5 M  G) lelse & i( r! I. T. `/ B3 ]' j
printf("The character wasn't found\n");
& `# k+ e" h( o. O( V' I  Treturn 0; - c0 m) l% I* T; n4 p
} 6 }% Y& ?+ b  W+ i
</FONT>
, E+ V9 H  n2 ~' W: I: o2 `</P>$ g5 u. z: w- K; n
<><FONT color=#ff0000>函数名: malloc</FONT>
; {7 e& s5 a* q! R. Y- W3 m. G功 能: 内存分配函数 $ h$ C4 Q) J% q6 Y# s; H
用 法: void *malloc(unsigned size);
! v5 P  _) ]! P8 d" p程序例: </P>
* z1 M& e4 q( f: ?<><FONT color=#0000ff>#include <STDIO.H>  b. \! f" q. D& y: ?
#include <STRING.H>5 N. |2 [) t- B, C) B/ k
#include <ALLOC.H># a9 j& S! R7 ]' `1 j5 z
#include <ROCESS.H></FONT></P>
+ M- \/ K7 ^! g: ?<><FONT color=#0000ff>int main(void)
0 T  n: ~( T4 c{ % d6 X. P/ @* x. f0 d
char *str; </FONT></P>
% e0 _, S3 ?3 Q: D' e5 |  [  E6 E<><FONT color=#0000ff>/* allocate memory for string */ ) I3 \$ ~1 V. s( X: ]' f& o% @/ y- i$ Z
/* This will generate an error when compiling */ ) F7 a: g9 w. x$ u
/* with C++, use the new operator instead. */ & H* ^8 c  I0 h- L
if ((str = malloc(10)) == NULL)
4 D9 R& \$ V+ i1 ~( W{
8 B! E" \) h; G7 d) Uprintf("Not enough memory to allocate buffer\n"); , H, N1 k! o, Y. ]
exit(1); /* terminate program if out of memory */ 3 l9 M. @* }7 f2 Y# E! ^
} </FONT></P>
5 f& {( m4 t6 B$ x6 v% z: h<><FONT color=#0000ff>/* copy "Hello" into string */ ) A5 n( U  k/ V+ k4 i
strcpy(str, "Hello"); </FONT></P>
, q) k# c& n7 Q3 Q7 B+ u<><FONT color=#0000ff>/* display string */ 7 j3 C! W' y; D. G+ d! d6 B8 c
printf("String is %s\n", str); </FONT></P># U* `, z. x6 x
<><FONT color=#0000ff>/* free memory */
( T6 J, h0 }8 r% K  F/ @free(str); </FONT></P>; s0 T/ V3 K$ q& }: Q, _
<><FONT color=#0000ff>return 0;
2 o6 Z& O3 D) M0 _}
% S6 E) ?: Q+ B- i- i0 O8 z. P) o
( t( s, n6 \; @7 |</FONT>
8 T) o2 _& ?! j</P>
0 n; \6 F( j8 j<><FONT color=#ff0000>函数名: memchr</FONT>
( i, j! e6 X8 `, w( X3 \功 能: 在数组的前n个字节中搜索字符
- |  G, O! D) _- ]用 法: void *memchr(void *s, char ch, unsigned n);
. D' O0 A& @0 m& [程序例: </P>
9 }) G, M0 ~: Z9 S<><FONT color=#0000ff>#include <STRING.H>; T5 H# e' X& B' @2 U
#include <STDIO.H></FONT></P>
) C" u3 L" N3 z. f$ U$ G3 ^<><FONT color=#0000ff>int main(void) / @) W& @# O8 ?& h7 X! q. b
{
( @! }; l% B. l( jchar str[17];
0 V* |. ^; r6 Jchar *ptr; </FONT></P>
( {# D* m% m% S  b<><FONT color=#0000ff>strcpy(str, "This is a string");
8 K3 k  Y# I" S% L, e. Hptr = memchr(str, 'r', strlen(str)); 3 ~( L. r+ I# K. a1 q9 h  z
if (ptr)
1 k" V) w) K0 j5 Y( D. v* tprintf("The character 'r' is at position: %d\n", ptr - str);
* e3 K  k- D& M4 C( e  J* Pelse * ]* D* x  D! ^" m4 d1 q! z1 Y( a
printf("The character was not found\n");
, m3 f5 A% `0 ^! B3 b1 z( T, t: ureturn 0;
" q  F1 t9 `9 _" E}
' h  D3 K/ }- @</FONT></P>8 p2 Q- u% y9 @) C( S
<><FONT color=#ff0000>函数名: memcpy </FONT>
( X; T3 i8 t! k! k! }& S功 能: 从源source中拷贝n个字节到目标destin中 ! k- J' a/ r) ]4 S+ |
用 法: void *memcpy(void *destin, void *source, unsigned n); 7 ~1 l: b& X0 A2 j+ A
程序例: </P>
! R( |6 B4 z' F- M/ {<><FONT color=#0000ff>#include <STDIO.H>/ b0 k! x3 H/ T; u; k
#include <STRING.H>1 W& ^: r( a) c2 S
int main(void) , p9 I) A0 O+ G  D8 z; b4 A) g
{ * Q9 `" F7 N) G* j2 |4 E! D1 M
char src[] = "******************************";
: A- }5 S7 W% i  p/ q' Wchar dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709"; 9 M2 ^6 V8 U- ^4 p  i7 M& |* ]2 Q' Z
char *ptr;
; S2 ^* _5 A' n3 c" Z( @/ v  R6 k& Dprintf("destination before memcpy: %s\n", dest);
. _& Q% j% D7 v( i  nptr = memcpy(dest, src, strlen(src));
3 W& o. j/ S( M/ t2 Nif (ptr)
1 p9 U6 u5 G) f% O/ @. a/ n# hprintf("destination after memcpy: %s\n", dest); ! d9 V3 L- v, u- a4 G0 h3 [% f+ o+ w
else 2 v! `( E) b" R& P
printf("memcpy failed\n");
; B) b6 {" R) I9 U7 k+ ~$ Rreturn 0;
& X2 r' A5 n3 ^, ], v7 K, L4 ^} 2 Y- I2 x; B) I# X
</FONT>, G" k( O! k2 ~2 F: Y* y; C
</P>" @2 m5 R, x6 {& j- m9 u1 r; V7 R
<><FONT color=#ff0000>函数名: memicmp </FONT>
& M1 n% ?; P/ g9 L+ X* W7 r9 v功 能: 比较两个串s1和s2的前n个字节, 忽略大小写 8 z0 j' c. M0 g
用 法: int memicmp(void *s1, void *s2, unsigned n); 8 j1 n- M: ]4 Z) Z7 E
程序例: </P>
- D2 \- z# o( U5 B( |4 ~1 ]<><FONT color=#0000ff>#include <STDIO.H>
3 T. c7 m# k9 e* Z& e1 k#include <STRING.H></FONT></P>+ ?& A" ]$ {  a
<><FONT color=#0000ff>int main(void)
  `( @" s; _, @5 R6 O{ 6 ~1 g0 p$ d1 {* J: l9 m5 T, j
char *buf1 = "ABCDE123";
6 v0 c7 a/ V" U* e# }# t  uchar *buf2 = "abcde456"; 4 F# S7 f, s7 k( k3 C# E
int stat; & \' Y4 l' Z) T% K/ o2 z
stat = memicmp(buf1, buf2, 5); % U% I7 }, S, P; L9 o  B
printf("The strings to position 5 are "); 8 Y* i" E" q' c8 J) j; v; N8 O' Y
if (stat)
2 R: r! O. P5 |; oprintf("not "); 0 c" O9 ^) l0 `; y
printf("the same\n");
' }# B+ e$ @- ~9 n# D+ C7 Creturn 0;
: t1 a* x! I; i} $ E5 h8 r; N! O2 g' R0 g  C
</FONT>
, @0 [% j2 L. P, f8 _</P>8 s0 K6 Y9 S8 R  N
<><FONT color=#ff0000>函数名: memmove </FONT>% m) x: L% @4 N7 I
功 能: 移动一块字节
* A1 D& Y8 ~' ]! n" ~用 法: void *memmove(void *destin, void *source, unsigned n); 0 X9 K( R$ j$ q' u/ E; M' z1 B- B
程序例: </P>( m& O( Z3 b: B: w  p4 R% K
<P><FONT color=#0000ff>#include <STRING.H>
/ W6 `! |7 H$ N1 `#include <STDIO.H></FONT></P>
  |  w- D( z; t* ]! H<P><FONT color=#0000ff>int main(void)
. ^" G" Z3 v* _6 x{
0 O, I0 ~+ G3 u0 M) Gchar *dest = "abcdefghijklmnopqrstuvwxyz0123456789"; " l) [# y5 K2 U; U
char *src = "******************************";
' q9 F4 B9 |" J8 R5 J2 Lprintf("destination prior to memmove: %s\n", dest); 8 D, W& Q3 w& N2 K$ V
memmove(dest, src, 26);
8 w6 O, r- x6 S% l* J' sprintf("destination after memmove: %s\n", dest);
  s" ?9 J' L% x; areturn 0;
7 T' l1 B) @6 g  p! V) U% J}
0 i+ n1 d! _  {' b& G4 z7 Z: a" S2 a6 h3 V
</FONT>
# P+ ~- j3 ~0 H1 {9 N& L1 q$ N</P>
9 M4 [& Q/ p0 W  `( y) w<P><FONT color=#ff0000>函数名: memset </FONT>
: v) ]) D/ C: K( S% M功 能: 设置s中的所有字节为ch, s数组的大小由n给定
( U4 q4 H5 J) L1 }5 c( Y' |6 E用 法: void *memset(void *s, char ch, unsigned n);
) |1 W3 n4 t+ B' ^' u程序例: </P>) u  _$ [. B+ p9 k/ j# k  s' B3 n
<P><FONT color=#0000ff>#include <STRING.H>+ p5 p0 _* W, z0 `& }
#include <STDIO.H>
0 L+ h, U) w; h5 p: z$ A. Y#include <MEM.H></FONT></P>3 n% \( e+ X  H
<P><FONT color=#0000ff>int main(void)
9 c, n* m  ^1 P- d  @5 T- b% Y, b' `{
6 d& n  C( g! |9 s+ J3 w: Achar buffer[] = "Hello world\n"; </FONT></P>
4 u  C. _1 |1 o1 F<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer);
) m0 d) }( l1 l7 m+ v' I' gmemset(buffer, '*', strlen(buffer) - 1);
" I* E" P7 |( Q& i; x- z5 lprintf("Buffer after memset: %s\n", buffer); # N' u- \) f6 n. q3 T7 b
return 0;
) B% D! p+ U. R: Q} </FONT>
8 \: v& Y1 Z; }
; U1 x, d  _: K* d</P>
1 O2 C0 \; `0 v% x: ?; f& ~<P><FONT color=#ff0000>函数名: mkdir </FONT>2 y1 o3 h. W0 i) j! ?
功 能: 建立一个目录 0 E8 [9 ]# d" b: d1 B$ T
用 法: int mkdir(char *pathname);
5 v9 y9 m+ P9 N* {+ k& T程序例: </P>9 p. [+ U8 Z4 ]. J/ V! [& E9 Q" U
<P><FONT color=#0000ff>#include <STDIO.H>, }& d1 L1 @) z
#include <CONIO.H>( Q% B  t3 d1 s2 _/ y! ]% G
#include <PROCESS.H>
9 ~9 ~4 Q. v, o) W% W6 I1 p#include <DIR.H></FONT></P>0 ^- s6 k5 l( y1 U
<P><FONT color=#0000ff>int main(void) ) ^" J: F) ~/ {( u0 U2 ]$ k/ E8 V
{ , x: u/ w# p8 h5 d+ V
int status; </FONT></P>
+ f3 d/ ^5 ]2 o8 d<P><FONT color=#0000ff>clrscr();
. l- |$ v6 |8 a, y6 B. Z3 n% Qstatus = mkdir("asdfjklm");
: V* f" A8 q0 ]7 V(!status) ? (printf("Directory created\n")) :
  \1 |. P8 d( P  s(printf("Unable to create directory\n")); </FONT></P>
4 |. L  F6 H4 {. ~- x<P><FONT color=#0000ff>getch(); 8 }& c. ^4 E5 O7 c. i, k
system("dir"); 8 s: h+ B# m! g+ Q1 _+ g" ~9 t
getch(); </FONT></P>- P" Z. X: l( w6 {
<P><FONT color=#0000ff>status = rmdir("asdfjklm"); # \7 ?/ u" d. K* T8 I. ?9 N
(!status) ? (printf("Directory deleted\n")) : ; ?7 U0 q1 C6 T
(perror("Unable to delete directory")); </FONT></P>
  e% X4 D0 H! \. }) T: h/ p9 W<P><FONT color=#0000ff>return 0; " d' `& C9 w6 H* y9 A+ R
}
7 ?+ G3 U5 Y3 D4 j5 t6 h
2 B5 r% {" P' w! u; H</FONT>
& w; m0 V5 l# }* f, h! q) p  o</P>
2 J" D5 N- I% f& e6 `8 O( @<P><FONT color=#ff0000>函数名: mktemp </FONT>
- l$ j* r# }  ]5 @# Z/ ~& r功 能: 建立唯一的文件名
+ t# ?" U* H& Q1 V+ z) X用 法: char *mktemp(char *template);
- B& q2 X9 m' `; \. U8 k程序例: </P>
( G' L# L% H2 F<P><FONT color=#0000ff>#include <DIR.H>
+ E" Z7 M% h* H0 z6 e! }* T* _#include <STDIO.H></FONT></P>4 \, \5 Q. \# }3 r3 @
<P><FONT color=#0000ff>int main(void) + |& X% I+ R1 ?% }0 D2 x
{
6 F% U# p% \0 h/ D/* fname defines the template for the % S8 i9 s7 n1 ^3 p$ `& c$ [
temporary file. */ </FONT></P>
! b% G' }$ L  m<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>; h) X' J" I- r/ ?1 Y7 h
<P><FONT color=#0000ff>ptr = mktemp(fname); : Z* @$ f' \" g* Q0 h
printf("%s\n",ptr);
; R. d% d# K0 }" D& y) preturn 0; ' }& P' B1 K! g  G
}
- ]8 X# C, R( I5 h</FONT>& X1 k  x8 Q" ^" K' y& M/ x" X
</P>
6 A3 M( c' U$ i, V<P><FONT color=#ff0000>函数名: MK_FP </FONT>6 y* I. p" N% C; k7 [1 Y; D
功 能: 设置一个远指针
' `2 a- I  F7 C  G3 Y" I: `; b( w用 法: void far *MK_FP(unsigned seg, unsigned off); " u: e2 k( ?! y* M/ S& b; o2 t
程序例: </P>4 ~7 [$ O7 T+ y1 d2 z* f: X$ ^: X- l0 x
<P><FONT color=#0000ff>#include <DOS.H>
3 K% V  z% `& r4 T8 v' v#include <GRAPHICS.H></FONT></P>1 q3 @: P0 j0 [: L4 T! Y/ A
<P><FONT color=#0000ff>int main(void)
% {% e1 O& _+ k+ z# O{ ( v& |5 P* }/ b; B0 [- }
int gd, gm, i;
% I2 I! {/ j9 d& Gunsigned int far *screen; </FONT></P>
6 Q5 D9 O' v$ M* b  Y<P><FONT color=#0000ff>detectgraph(&amp;gd, &amp;gm);
  f- |5 D. `1 ^7 Aif (gd == HERCMONO)
- O$ A7 C% c$ v& H) k8 A- wscreen = MK_FP(0xB000, 0);
/ I4 Z- z: Z  R6 l) v3 c* qelse
8 m2 C0 j+ ]6 M- o2 `% jscreen = MK_FP(0xB800, 0);
9 W& w& Z' @( R6 [! |for (i=0; i&lt;26; i++) . x* j5 k1 ~2 B* L  V0 l. G: q
screen = 0x0700 + ('a' + i);
* x  ~/ a' n: dreturn 0;
: t# s; }/ p% c; s( c4 m' F$ Q5 |} 5 g: ]4 P0 Z3 G: ?- Y5 G
</FONT>, W; R9 Z) Z, @# A: j
</P>
, F/ o1 L; v+ D2 @5 R2 S3 r! E, N<P><FONT color=#ff0000>函数名: modf </FONT>5 v- q2 F$ _$ ]: u
功 能: 把数分为指数和尾数 1 a9 |4 f9 }0 J+ A4 M
用 法: double modf(double value, double *iptr); ) Q1 n5 x/ p5 `9 j, ?4 S: r# n
程序例: </P>
: w# }: @7 W; w) i! \<P><FONT color=#0000ff>#include <MATH.H>
  M1 q' [5 r3 Q+ E7 Q( `: H#include <STDIO.H></FONT></P>
6 n' R4 M2 o" o* D<P><FONT color=#0000ff>int main(void) ' k- o. w+ q4 t' w
{
% U1 W* x  o4 V  G/ h6 O- kdouble fraction, integer;
: I( M  l0 E2 pdouble number = 100000.567; </FONT></P>
$ h. o! }2 U, T<P><FONT color=#0000ff>fraction = modf(number, &amp;integer);
3 R3 u% h8 l' r5 {6 iprintf("The whole and fractional parts of %lf are %lf and %lf\n",
! c5 I( T8 a" _number, integer, fraction); 2 L  u4 w- s' W5 X
return 0; & Y  O8 s4 |# `5 f( U8 r
} </FONT>
8 V8 E) \: R3 t: X- D, W# L( ~2 w. o) D( b
</P>2 E( e! @: @, M$ e# o8 F
<P><FONT color=#ff0000>函数名: movedata </FONT>5 o) |4 S7 j" x# U1 X! K6 D
功 能: 拷贝字节
; K4 t) {" O* W1 g, a# s4 N5 ^3 ~用 法: void movedata(int segsrc, int offsrc, int segdest, : F$ N! k+ m/ s4 T* Y1 P
int offdest, unsigned numbytes); * a* }, j/ Y; E: S. @7 u
程序例: </P>
) \, ]3 z6 A* {  P% o<P><FONT color=#0000ff>#include <MEM.H></FONT></P>; U# C* ^8 P" w- ?( i% M3 e7 S" r
<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>
1 `0 `  J% E: K<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */
" p* ]( M- d; d/ o# cvoid save_mono_screen(char near *buffer) # v, l0 O$ ]  s- r) l  \# T- G: m
{ + E5 b( y! N# f* A" j
movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2); & O0 y+ L2 K6 y- x9 S4 p
} </FONT></P>& \6 Y, y8 ~; B. j
<P><FONT color=#0000ff>int main(void) $ ?# K' x" r6 z3 v
{ 3 i3 I9 G- f, d& w( y. R) M5 p
char buf[80*25*2]; 0 [& K3 X5 w* \- K: j
save_mono_screen(buf); " ~: \( b1 i: s' _1 R
}
" {+ f3 q0 K; o7 `</FONT>
. `# i6 d9 g) H4 l  i. m& F</P>
& O( }# P8 f# n) D/ {* z! n9 |<P><FONT color=#ff0000>函数名: moverel </FONT>  ]4 Y8 O' O3 e% q: s
功 能: 将当前位置(CP)移动一相对距离
7 L; c0 g4 p' T8 ]4 M用 法: void far moverel(int dx, int dy);
7 ^% L- I( D# ]# j3 S. W3 L1 b程序例: </P>
- @# D7 p' t' U. b. Y! J* D! ?% ^9 ~<P><FONT color=#0000ff>#include <GRAPHICS.H>
( w: [3 e5 q# r- I3 o; W; ^0 R#include <STDLIB.H>& n9 K9 g& l, R" z! D/ {
#include <STDIO.H>; `2 J. ~' ]0 |/ B2 l2 D
#include <CONIO.H></FONT></P>  i1 q2 `- f6 `, O% ^" ]
<P><FONT color=#0000ff>int main(void) 1 |7 K/ K6 {; m8 N. a
{
& @* q, j" D$ v4 Y! H: ~  D/* request auto detection */
$ ~2 w4 p7 h9 h$ C3 l1 Kint gdriver = DETECT, gmode, errorcode;
0 m) V- S8 |; B- |char msg[80]; </FONT></P>: G% `; P, x& n5 G4 `
<P><FONT color=#0000ff>/* initialize graphics and local variables */
5 e$ C  z8 L- B2 b' rinitgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>$ O5 }" K* U. N; u
<P><FONT color=#0000ff>/* read result of initialization */
: t4 q* l/ S- A3 U1 n; xerrorcode = graphresult();
* J  `8 }6 J+ H% O) ^1 C5 iif (errorcode != grOk) /* an error occurred */ . H' [: T4 l! Y% i8 s  [
{ : z6 b6 ?, V. z" }2 t
printf("Graphics error: %s\n", grapherrormsg(errorcode));
) J; j( y/ z( N' Aprintf("Press any key to halt:"); 5 q* O, S* a% [7 J7 h
getch();
& v; Y: H; q6 ], ~9 wexit(1); /* terminate with an error code */ ; L7 q, H2 l* J0 O5 A  s
} </FONT></P>8 a6 N! P2 A2 |  H
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
7 e3 c+ i! \5 f) {; J3 j4 q& Dmoveto(20, 30); </FONT></P>3 p$ D2 E& O% B" g- V* B
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ # L. `7 w9 ?! J  n  y- _
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>3 L' P9 F9 b" k
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */ % O8 Z9 Y$ R$ G4 Y! m& \) i& J
sprintf(msg, " (%d, %d)", getx(), gety());
; H% D' @, O  p+ routtextxy(20, 30, msg); </FONT></P>
2 Z( a' h5 F: J<P><FONT color=#0000ff>/* move to a point a relative distance */
0 C- r! ]/ t  o( s- O/* away from the current value of C.P. */ * V. {6 x. f) Q. m* Q
moverel(100, 100); </FONT></P>
* M/ K+ O, `. j6 a$ t<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
0 R( j6 {* T% dputpixel(getx(), gety(), getmaxcolor()); </FONT></P>) a3 c" K6 u: ~  |% t. V
<P><FONT color=#0000ff>/* create and output a message at C.P. */ 2 R4 N4 f  }8 _: I
sprintf(msg, " (%d, %d)", getx(), gety());
# Y% r* k- t* P/ R- j9 T! |outtext(msg); </FONT></P>
/ D, n1 I; n+ y/ m; r<P><FONT color=#0000ff>/* clean up */
( r) E6 ?$ H. P' {2 D. r5 qgetch();
$ h- o' k6 E4 W# t3 s. Xclosegraph(); + ?- u: V1 Y  a- m  H
return 0; / u8 o2 E1 h  `  |9 v: D# M: ~: O4 ^, m/ m
} " ?6 T- y8 i& A1 e
</FONT>9 m2 I5 X8 D! L9 p$ A! l
</P>
! ]4 D! i4 @8 O3 H% P<P><FONT color=#ff0000>函数名: movetext</FONT>
' B- J( S) {+ s+ A+ V功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域
6 e' C3 P+ u6 q& V; u4 d用 法: int movetext(int left, int top, int right, int bottom, 9 p; r) U3 d- V+ H, l
int newleft, int newtop); . f% H2 r: ^) p, b, F
程序例:
% l0 O' ?% K5 P# A' G<FONT color=#0000ff>#include <CONIO.H>% U4 D" M* v; y8 b5 v
#include <STRING.H></FONT></P>
$ ~- e( P# l$ ?; {$ e<P><FONT color=#0000ff>int main(void)
/ ]& u9 A' ^0 Q  S( R2 ~{
9 l) c/ ?4 o- q% Q; pchar *str = "This is a test string"; </FONT></P>- ]3 T7 f) z  K8 t
<P><FONT color=#0000ff>clrscr(); ( v/ X0 {! s9 A) U
cputs(str);
' Y) s9 [8 g5 v3 W/ L" Ygetch(); </FONT></P>
8 k& Y; G: Q" G3 q/ `8 l2 f; W<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10);
. B& r/ {, e  J7 u9 agetch(); </FONT></P>, A3 G' V& t: l5 |; c2 Y$ d7 ^& m
<P><FONT color=#0000ff>return 0; 5 Y$ a8 r, `7 |# c8 C
} ' r/ T" W7 l& r/ S. I' @
3 S$ P* ^  z$ T) Q2 M# s( [
</FONT></P>9 s: \# v9 J6 ~+ d! W* |; r
<P><FONT color=#ff0000>函数名: moveto</FONT> + Z& F; B  [3 s
功 能: 将CP移到(x, y) ! l# Z4 M8 f$ \5 ]
用 法: void far moveto(int x, int y);
* l+ Q. G& V, w  e! B" N2 {程序例: </P>9 J- C7 |" C) G5 S) ], U% o) x
<P><FONT color=#0000ff>#include <GRAPHICS.H>7 y% g' Y4 H8 U' L
#include <STDLIB.H>
* I/ U6 |3 D2 l1 n! l#include <STDIO.H>
; k5 _$ @9 k# G/ w+ [9 |#include <CONIO.H></FONT></P>
5 W5 A/ T3 q; p" n' g<P><FONT color=#0000ff>int main(void)
" z9 h& k9 a' Z% g{ % [$ I$ S# L7 V! e1 B  l: ^
/* request auto detection */
! J  M& b# o7 O; }" k+ P- g% jint gdriver = DETECT, gmode, errorcode; & Q$ n$ M: D7 h: h1 @
char msg[80]; </FONT></P>( p3 W4 K' L* r* @3 @# f+ W4 c
<P><FONT color=#0000ff>/* initialize graphics and local variables */ 2 c. E- D* X) v. l. S0 K
initgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>
4 ]" C. S! X: D( g) f* ?<P><FONT color=#0000ff>/* read result of initialization */   v: w+ G! {$ c7 b: |: b& X
errorcode = graphresult(); 6 ^% j! T* F. r6 K9 q  q
if (errorcode != grOk) /* an error occurred */
; z7 {4 h7 m' P0 [{ ! k) K2 `2 M8 w3 r7 p2 i
printf("Graphics error: %s\n", grapherrormsg(errorcode));
1 Z5 F/ r# U. q' p+ C3 \printf("Press any key to halt:"); 7 W! r. U: ~+ }, E6 ?
getch(); 5 r# {& m! ]  x8 j
exit(1); /* terminate with an error code */ 8 q: }% `! J' A2 q4 F3 a, X# C
} </FONT></P>, V/ S# Z; T! F5 N7 ?# {
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ " y$ b/ H3 d3 W2 W  B, _
moveto(20, 30); </FONT></P>
  H* c$ K4 u" }1 G/ z! P<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
/ S8 `5 u. a! hputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
, ~% A2 N6 X* u4 v<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
2 ~. \; V8 H8 Gsprintf(msg, " (%d, %d)", getx(), gety()); 4 I- [$ p  l: G) t4 E
outtextxy(20, 30, msg); </FONT></P>; n' i3 W( d& Q* y0 L
<P><FONT color=#0000ff>/* move to (100, 100) */
: U2 \- z" Y1 S0 xmoveto(100, 100); </FONT></P>
, j+ s  I" v5 w$ d5 ?, c<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ : M0 ~% o9 w8 ~1 l0 h
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>/ ~7 L8 D( M  c
<P><FONT color=#0000ff>/* create and output a message at C.P. */
- i1 h1 E! g" G6 u- M: M. H8 @sprintf(msg, " (%d, %d)", getx(), gety());
' \5 x& ^* K8 B8 @$ [4 youttext(msg); </FONT></P>( v8 u4 b2 `' C5 k$ d$ d
<P><FONT color=#0000ff>/* clean up */ / S2 i2 t+ T6 v* t8 v9 R
getch(); " M0 p* w7 r6 J: {* M9 H
closegraph();
: ~, Z) ^- P  b% A( P* Mreturn 0;
3 |# y- U6 J) ^# k}
% }! V+ a* O! R2 E5 P5 C</FONT>
, F1 e; H+ y1 o: d</P>
  ~$ {% s5 P) _3 x<P><FONT color=#ff0000>函数名: movemem </FONT>
3 z3 @+ d5 B1 @$ D: N: r7 |6 O功 能: 移动一块字节 4 C1 G) b+ G$ |5 T7 \" B
用 法: void movemem(void *source, void *destin, unsigned len); 9 a5 r. Y- q( P# C! t
程序例: </P>. d  r, _# g- u# S( t) Z
<P><FONT color=#0000ff>#include <MEM.H>
! S( Z7 s0 \1 M* X: b$ T5 Y3 U#include <ALLOC.H>7 K5 E* A7 r7 ~! J) O
#include <STDIO.H>2 N5 c: _" B4 l* y
#include <STRING.H></FONT></P>
1 o) B0 T! i5 ?; r& R<P><FONT color=#0000ff>int main(void)
7 S$ N, g/ ~2 j/ I{
+ s, W) N* A* Z3 j2 x9 o5 jchar *source = "Borland International"; ) `* d" z0 o# A
char *destination;
" E1 X' h! d' Yint length; </FONT></P>- ~3 \3 j$ Z# U/ S
<P><FONT color=#0000ff>length = strlen(source); " V4 C! {9 ?1 Y! ]
destination = malloc(length + 1);
" O* t3 G' |/ Q4 Zmovmem(source,destination,length);
. h4 I: `" p! i8 u# _3 fprintf("%s\n",destination); </FONT></P>
# ^4 z# n- p9 i+ a: @; N9 v<P><FONT color=#0000ff>return 0;
9 Q! G& ]$ ~  h. \, u}   [3 ], [6 |9 y! f- \- m0 J& n7 {
% u: J" B3 v, i! G! n  k  D$ e2 ~
</FONT></P>
6 j: Q- U$ i' }' I$ y+ `1 n<P><FONT color=#ff0000>函数名: normvideo </FONT>
6 @8 j' [/ r8 U) M) g功 能: 选择正常亮度字符 9 }: q, a. o1 O. L6 l
用 法: void normvideo(void); & {; ~# l% T4 i: W5 q3 [8 W: e  u0 i
程序例: </P>
  _: }0 e3 u  f6 x<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>1 f6 X) m& O) l- Q4 h% v
<P><FONT color=#0000ff>int main(void) 8 o! G; M0 R2 p9 ~6 G! o$ O! N
{
- q+ |3 P4 i! \normvideo(); * s' g% p$ G* U0 Y5 q# N
cprintf("NORMAL Intensity Text\r\n"); # f4 a1 b5 x# B* \, b* y) k, m
return 0; $ M+ \' p6 n# r5 q+ K( g
}
' {4 O, f1 N3 t5 o7 G/ k8 M6 ^" m
</FONT></P>
" L- }6 L1 R0 H, m6 k+ S& e2 s<P><FONT color=#ff0000>函数名: nosound</FONT>
# O4 l4 b' ?6 _" m1 ~& F% y+ A功 能: 关闭PC扬声器
+ `) p# O8 @( x$ u$ t用 法: void nosound(void);
3 e& ~% V9 N% [% ~% S8 _' R程序例: </P>' N9 c* M. m4 o/ L' O
<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>8 O2 s% d9 j( i4 e' `; k3 e( Q( h% w
<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity.
6 U) a6 a4 k* w# L) R2 @; p5 \This was determined empirically in Australia, where a new factory & `; v% \) z. Z3 m) e  K
generating 7-Hz tones was located too close to a chicken ranch: & f- g7 ]# o! I8 \2 w
When the factory started up, all the chickens died. </FONT></P>
- x: c' t  R: t( t# a; e1 ]<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone. , j" r- V/ p7 v9 w
*/ </FONT></P>
1 n/ D2 M! ?6 ?; l) _8 W0 {) F<P><FONT color=#0000ff>int main(void) 7 S* @  ?; t  a) _
{ # ]7 X4 V+ ?' G$ X
sound(7);
' G5 B0 m$ e/ e" b* A: ndelay(10000);
! v4 d) m" z! `9 F+ t+ knosound();
0 F$ V+ X; d! L' M6 t}8 i; Z3 P3 `, U. a" m5 y1 W. Z
</FONT></P>




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5