数学建模社区-数学中国

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

作者: 韩冰    时间: 2004-10-4 02:57
标题: 函数大全(m开头)
< align=center><FONT color=#0000ff size=3><B><FONT color=#cc0000>函数大全(m开头)</FONT></B></FONT></P>
, T5 b" P3 n. s9 W4 N1 u5 v< align=left><FONT color=#ff0000>main()主函数4 W8 \% m2 Y8 m; d5 a
</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某
! p. `$ e3 ?7 l3 N$ ^) L: P. F" |个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 4 r4 b! e2 x9 m$ ~& [4 Y; K* \
在哪个地方, 以下几点说明都是适合的。   b* \" J; ~3 V  b# C6 [1 X
<FONT color=#000099>1. main() 参数 </FONT>
) {" `7 B0 y* c" e( C0 W在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
2 Z! R# S5 c( G: }5 e* argc: 整数, 为传给main()的命令行参数个数。 $ J) x3 O3 T1 L3 n; V) {1 q
* argv: 字符串数组。
7 T$ F/ I* X: e! O在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0 ! t6 L! R; {1 g5 o" N5 g
以下的版本, argv[0]为空串("") 。 $ o2 W! M8 H1 _' e! l& V3 y
argv[1] 为在DOS命令行中执行程序名后的第一个字符串;
4 O4 y1 j5 t; A( Wargv[2] 为执行程序名后的第二个字符串;
! z( o* C2 f; ?' E/ C: O. j  I( e...
! \* B' G9 N) n0 i; m! e/ nargv[argc]为NULL。
' x# w& ]# D/ r- b*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符 & d8 P& x4 \7 J6 x
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C: 2 p8 \' F2 F9 y6 w) E5 E: M/ ~
\TURBOC(对于PATH) 或YES(对于87)。
, z8 U* I$ C0 o: X4 B* a0 y) n/ zTurbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中 3 w$ r8 }# z1 ]
说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序 . J7 E$ \; O2 L* D! r
的局部变量。 - z6 f$ _8 P& I, D4 T+ g' T
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下 1 n! J7 |, [5 E! X8 j
的例子: 8 z0 s$ j% H7 O* N% g+ z
<FONT color=#0000ff>main() 3 Q* T% C' o: }) j4 ]
main(int argc) 9 v4 @8 [, t/ Z( @- t; p
main(int argc, char *argv[]) 1 g( g% S- u# N4 F9 j
main(int argc, char *argv[], char *env[]) </FONT>4 {2 N2 [% X$ B; s1 n
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
' ^- h# {! b5 T6 w用argv[]的情况。
# ?! s3 H9 j& D& L7 V1 [' x以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
3 p( j- a1 d1 e) `<FONT color=#0000ff>/*program name EXAMPLE.EXE*/ 4 @, G& o/ P; y$ v. A7 J7 `9 `
#include <STDIO.H>
* a/ {% n. v8 c, n#include <STDLIB.H>  R; w0 E; B6 v8 R
main(int argc, char *argv[], char *env[])
+ O; I) b3 x6 V5 x- G7 [" ~( z{ 1 M9 I4 e  v9 m
int i;
9 t6 o- @$ j7 [, Lprintf("These are the %d command- line arguments passed to 7 Y9 S' O7 Y3 s+ L: t9 x3 K: W; ~
main:\n\n", argc); ; u7 ^, o. j: O, h9 `0 A) n) S
for(i=0; i&lt;=argc; i++)
/ y  ?* P' j1 R' a: Iprintf("argv[%d]:%s\n", i, argv); - [, h. h  c! O1 ]2 ?. i
printf("\nThe environment string(s)on this system are:\n\n"); 4 u3 w: @" l7 j8 o. Q
for(i=0; env!=NULL; i++)
1 [# [. y+ B9 T9 sprintf(" env[%d]:%s\n", i, env); * K# ^  m% C2 {) r9 C4 n
} </FONT>
/ i0 g; e! r9 z8 |: L7 g; U如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:
) T5 x7 U# S, Z( D' {) AC:\example first_argument "argument with blanks" 3 4 "last but
$ O/ ?" B. `4 Z* x+ r( d# f! J# Tone" stop!
! g. u( @9 _3 s  d注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument
4 `0 y' {/ G! h* k5 Nwith blanks"和"Last but one")。 # a7 R; e9 w2 H; R9 m
结果是这样的:
. c' k7 b6 B- r/ K7 L+ R! B! ]8 Z1 J<FONT color=#0000ff>The value of argc is 7 % Y, J6 a, W" U
These are the 7 command-linearguments passed to main: 4 f. ]+ n6 \0 P1 ~- r. {+ o
argv[0]:C:\TURBO\EXAMPLE.EXE 1 c# H, O( d5 q
argv[1]:first_argument - t7 G$ l$ g, r" g3 s3 ?
argv[2]:argument with blanks 4 d4 C' M0 V! R; @
argv[3]:3 4 O/ ^9 y; I3 H, s, z, Q
argv[4]:4
  E& C& w" Z+ ^6 w7 Wargv[5]:last but one ( K/ N8 i( m0 N8 k& u
argv[6]:stop! # m, ?  a) v# D# h! n+ F' R& s8 B* ?+ _
argv[7]NULL) 1 m% X( Y- A' @
The environment string(s) on this system are: 9 P5 T9 Q8 |: W% K  e: M- r; r
env[0]: COMSPEC=C:\COMMAND.COM ( h# |4 [$ l0 R; I& v- ]" A& _
env[1]: PROMPT=$P$G /*视具体设置而定*/ % y+ a8 y! H" g8 r$ o1 I, `
env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ * x2 D! T) N& |! h) S. Q
</FONT>8 ^' F  n6 ^4 d2 b$ A
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
3 |- s0 r1 m' |- x括参数间的空格), 这是由DOS 限制的。 0 G6 _7 g* Y0 |; m
</P>
, v" p1 D! ]% q1 O) @<><FONT color=#ff0000>函数名: matherr </FONT>
& n+ R6 ?# z- X0 N3 S( U* |. ~功 能: 用户可修改的数学错误处理程序 4 S1 G) a7 V" n8 l" ]& @' g4 x
用 法: int matherr(struct exception *e);
5 c! ~" j8 L3 Q程序例: </P>
# T+ ]$ t: N: X# W5 z/ S<><FONT color=#0000ff>/* This is a user-defined matherr function that prevents 8 ?2 [& G+ o; T% n" z, ]1 G
any error messages from being printed. */ </FONT></P>8 T- f+ o2 R! q8 `
<><FONT color=#0000ff>#include<MATH.H> </FONT></P>
* V) P/ @! {) @5 D$ l, X& U<><FONT color=#0000ff>int matherr(struct exception *a) 9 B' l5 [) v( [
{
. N- o/ m/ c( K8 ^9 vreturn 1; 6 o: E' n. P) D
}
2 G+ f/ F$ y9 i; l  U3 C* m</FONT>
- A0 _( y1 F  y6 m( x
! b$ ?% O6 \$ |. |- s4 a. i</P>* }" k" A. {/ b4 i  [9 E
<><FONT color=#ff0000>函数名: memccpy </FONT>6 J# f! B' O. K, V& [
功 能: 从源source中拷贝n个字节到目标destin中 7 |2 `/ p$ K2 G, t+ a4 [, E
用 法: void *memccpy(void *destin, void *source, unsigned char ch,
& J# a/ P; q: w% zunsigned n);
; Q) c* X( }! ~' f程序例: </P>
/ L7 _/ C7 p/ i% c<><FONT color=#0000ff>#include <STRING.H>7 d. X  x; a, T2 y" u
#include <STDIO.H></FONT></P>+ |/ ^2 c5 }. t! i" H$ N" F
<><FONT color=#0000ff>int main(void)
6 Z2 O% u% }( |1 l' j# s$ I{
% P# ]3 d- v  p2 _/ W# xchar *src = "This is the source string";
7 \# d1 v4 D8 \7 n, M, k- ychar dest[50];
% \1 o# b5 Q1 uchar *ptr; </FONT></P>( I' g6 j: J7 x5 W) J
<><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>% t8 W/ r, w. h$ E: U/ c4 Y
<><FONT color=#0000ff>if (ptr)
3 k: @9 `, x- B+ {4 e{
3 |" _( D& y% I3 b, z9 Y% j' @*ptr = '\0';
# @1 d6 s; {! N) u& l3 r, _printf("The character was found: %s\n", dest); 5 n- m0 c- ^0 j3 w
} & C1 }# B, d/ r  J! S
else
* f. `) ]  w3 z2 @: i3 z/ lprintf("The character wasn't found\n"); + ?* J" t! `* D
return 0; ( g) _4 a) y, u; Z' C
}
/ s9 y6 Z1 Z# j* H</FONT>
8 |8 H% H; s  @1 v</P>
5 `9 [! T* N0 ]! \6 a/ O- J<><FONT color=#ff0000>函数名: malloc</FONT>
- j. I4 i3 D) }9 d) a  j6 u$ E功 能: 内存分配函数
3 y* o* o8 X: O4 z1 q5 {5 `用 法: void *malloc(unsigned size);
7 E3 g! b4 w+ X4 Y程序例: </P>  M" S# V+ n( t$ j
<><FONT color=#0000ff>#include <STDIO.H>
* H+ V+ W2 u" A. ~: e#include <STRING.H>) u  A# ~" n7 {6 N
#include <ALLOC.H>
. Z/ Z9 {; Z. j* l0 Q) |6 y#include <ROCESS.H></FONT></P>
6 z% f7 ?+ Q/ Y: U# R  e2 b2 \<><FONT color=#0000ff>int main(void)
$ O+ f" K4 q; ^  Q, k. G" \{ - D) t$ t1 g! T  k) b1 A4 }
char *str; </FONT></P>
, ?$ z2 u* l7 v1 E<><FONT color=#0000ff>/* allocate memory for string */ " w0 h& x2 y# W+ v8 P9 t/ n# g/ E& W
/* This will generate an error when compiling */
' c0 G2 E- X' b/* with C++, use the new operator instead. */ ' p  y7 o; w6 K3 j4 H
if ((str = malloc(10)) == NULL) : E6 ~. g& z5 b
{
1 s4 ~* l$ }+ o6 d$ I3 N* U8 z" Iprintf("Not enough memory to allocate buffer\n"); 6 D* z- ~% R* Z4 ~  }
exit(1); /* terminate program if out of memory */ - I: j) g! q3 @/ g0 i4 D8 Q: d& |' F
} </FONT></P>6 H% X' B  [+ L0 h
<><FONT color=#0000ff>/* copy "Hello" into string */
8 {5 r; |5 ?  fstrcpy(str, "Hello"); </FONT></P>% [! M' O8 H  O, D8 ?
<><FONT color=#0000ff>/* display string */
1 A6 n; |1 Y% U  ?7 v8 O5 }printf("String is %s\n", str); </FONT></P>% M% w# q1 Q; C: R6 T% U8 N
<><FONT color=#0000ff>/* free memory */ 3 i: O1 ?- e4 H7 ?
free(str); </FONT></P>3 s4 V$ M( q9 ~
<><FONT color=#0000ff>return 0;
: G& E2 o/ w* @& j- z3 h* Q# z} 5 y3 d0 @" y$ J1 a8 l$ B

* \: S& X# w' c& d</FONT>, L0 u+ \  ?: z" N
</P># y  B4 H) ~5 ~8 w% P/ n
<><FONT color=#ff0000>函数名: memchr</FONT> # Z! B! J2 G$ P( d1 w" n4 A3 ^3 }
功 能: 在数组的前n个字节中搜索字符
  e- d1 ?+ K& T用 法: void *memchr(void *s, char ch, unsigned n);
2 n2 w" P9 j4 @程序例: </P>
2 ]. N# u. c. a" x( d& M5 E<><FONT color=#0000ff>#include <STRING.H># H* }. j2 {) X( x" B; `
#include <STDIO.H></FONT></P>
7 v9 i+ A- m' _/ S# j8 I<><FONT color=#0000ff>int main(void) 3 n6 ~: d3 o8 B
{ * z: u( h( _( f
char str[17]; $ i1 @/ Q9 o2 N6 S% u, L  n
char *ptr; </FONT></P>
1 y: c4 I4 v/ z9 F1 x$ n( R! [) m<><FONT color=#0000ff>strcpy(str, "This is a string"); 5 r9 p  P( V3 o* `+ D& g
ptr = memchr(str, 'r', strlen(str));
0 A' F: |9 v. ]. ]. m7 Oif (ptr)
8 d0 \1 {4 q7 I2 Q+ K' Iprintf("The character 'r' is at position: %d\n", ptr - str); # Y9 w! ?# M3 \  ?% M
else
) V; h) y4 Q4 O* }% Qprintf("The character was not found\n");   c, S, c' m6 [2 c* T) {
return 0;
3 b/ E1 M' s% M4 _7 ~. B} 0 j- f( h5 A& t/ U! {6 a
</FONT></P>
8 K' O  J- C: R2 w$ w" }1 [<><FONT color=#ff0000>函数名: memcpy </FONT>
+ f% T. y, e9 ]) e! G0 b  [) B* T功 能: 从源source中拷贝n个字节到目标destin中 ( j' J& Y5 ~+ |- N3 W# L
用 法: void *memcpy(void *destin, void *source, unsigned n); # @6 C1 F" u$ m# j4 j% `
程序例: </P>
0 f* z1 F5 `( T: }<><FONT color=#0000ff>#include <STDIO.H>
  C6 `- t' J( ~% \  r0 [( h#include <STRING.H>, E/ G9 T) m5 A# ^0 |% G
int main(void) * q  k# P4 Z2 F+ J- G# v6 h& x" ?
{
8 `  H) o( C9 s* ~char src[] = "******************************";
; K: I2 z  w; w8 }7 tchar dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709"; + m( X5 J' u' s7 k/ V: `: i
char *ptr;
1 ~8 P2 C8 D$ j: f2 e& r9 sprintf("destination before memcpy: %s\n", dest);
$ x* P2 B0 S9 v0 H& r3 n5 b9 \7 @; Uptr = memcpy(dest, src, strlen(src));
; C7 T9 t4 ]* c% Z5 J% P1 ~( wif (ptr) ) ]9 w* e! M/ j) P
printf("destination after memcpy: %s\n", dest);
( \6 \3 S9 I+ ?else
9 N  X1 v/ `- E3 \' C' Vprintf("memcpy failed\n");
( }" V4 A" L) [( u; i$ ureturn 0; 3 V- \4 ?* Q& J" n
}
6 g& J8 e- I& _- [  {) [0 ?* u</FONT>( O; ?' D6 Z  Y9 T
</P>
! Y/ z+ M- r3 l, w; x<><FONT color=#ff0000>函数名: memicmp </FONT>
" ?- Z$ N: v: E- f- @) w( Z功 能: 比较两个串s1和s2的前n个字节, 忽略大小写
- b1 O9 W; K" u5 b用 法: int memicmp(void *s1, void *s2, unsigned n); ; D; R; _- n0 |& S& L/ \; x- R$ _
程序例: </P>" a. f# A1 ]6 {& \4 U& X2 B. ^! W
<><FONT color=#0000ff>#include <STDIO.H>3 _; R# z: a+ E2 J' ?: Q8 O% \" o
#include <STRING.H></FONT></P>
% a4 }; t, N# J+ P* [3 O' Z<><FONT color=#0000ff>int main(void)
8 }) X5 P' [4 Q  S  ~  B{ - ]7 s- R: p# U9 A* R8 v9 r+ r
char *buf1 = "ABCDE123"; 7 e3 r; i1 Z" \' W
char *buf2 = "abcde456"; ( j- Z: W# O3 [
int stat;
- i% n  H# }; o6 [8 N  S  g2 s, Fstat = memicmp(buf1, buf2, 5); " V$ D7 J6 N; `; X5 F
printf("The strings to position 5 are ");
8 P1 M/ n7 Z  t; oif (stat) - Y( f- ?3 @4 K1 ~) h# N
printf("not ");
6 @/ ~$ N! j0 P6 Gprintf("the same\n");
4 E) Z- `, z% O2 j8 w4 l5 preturn 0;
+ I  _. K: `  X1 ~}
$ j) \- F# I# N/ e: ]</FONT>- o* P; m7 x4 p- l, R
</P>' b* E/ b3 w' c
<><FONT color=#ff0000>函数名: memmove </FONT>
  e3 Q: q+ R2 _) E6 W功 能: 移动一块字节 7 H9 W" @$ [$ U6 u
用 法: void *memmove(void *destin, void *source, unsigned n);
4 U) S5 b2 b9 L' q' v; ~6 A) z5 {5 d* Y程序例: </P>
$ ^" _, N# E5 W<P><FONT color=#0000ff>#include <STRING.H>
6 l. S5 }3 Y7 F' F# s: \2 }" t#include <STDIO.H></FONT></P>
" X- n1 W# `* h/ h0 w' J+ @* m<P><FONT color=#0000ff>int main(void) * g' @! b3 Y" X/ N& U! _1 t" n% T( x
{   P& {! u3 O5 K% ~  `  B
char *dest = "abcdefghijklmnopqrstuvwxyz0123456789"; 9 F/ l- D6 V& `: G& O; t0 t- U5 _/ v
char *src = "******************************"; 8 \, l$ @* S8 K  M) C9 ~
printf("destination prior to memmove: %s\n", dest); 4 {' g6 E' f3 `9 {
memmove(dest, src, 26); ' O" M+ v6 ]" z. J
printf("destination after memmove: %s\n", dest);
* P2 E8 S, u0 \4 ~" _) F0 z6 kreturn 0;
) c$ l/ `$ b! C8 G. L# Z4 B  O} ' T2 W4 R/ |( y- y( k

6 G1 D6 N: g3 U/ I; ?3 m6 e</FONT>- f* h! @4 ~$ ]8 b+ h# @" \$ w/ v
</P>7 H0 T* t+ j; ?
<P><FONT color=#ff0000>函数名: memset </FONT>6 |9 l$ w* V1 \" M
功 能: 设置s中的所有字节为ch, s数组的大小由n给定 % `$ a1 J/ E7 y3 [
用 法: void *memset(void *s, char ch, unsigned n); , v5 ^. F, n- \/ A8 E0 d
程序例: </P>$ t6 P8 w9 b/ c9 G  K+ j
<P><FONT color=#0000ff>#include <STRING.H>- }1 x6 W0 X4 v  E- d
#include <STDIO.H>' S, a4 h2 M7 M1 P
#include <MEM.H></FONT></P>
3 t2 x* c. Q+ w) T; B/ O<P><FONT color=#0000ff>int main(void) 9 J4 X5 Q5 X6 x( H+ `2 b4 W* Z
{ ; D. t3 o+ D' P* f
char buffer[] = "Hello world\n"; </FONT></P>5 _  N$ V; @8 h' I( n
<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer); ; p+ M  C9 t& j: ]  `3 D
memset(buffer, '*', strlen(buffer) - 1); $ b) h3 m+ f& L2 U# v1 j- Y
printf("Buffer after memset: %s\n", buffer);
% S2 X* c+ m8 ^) ^return 0;
  I4 L& C( ~8 T. [9 x- Q} </FONT>
, X$ O! v2 `0 k! P% M) p, x. W) `! L5 [& O( n
</P>) @, [+ ]2 X+ Q) y) h/ t0 \
<P><FONT color=#ff0000>函数名: mkdir </FONT>( f$ w6 F2 {; h
功 能: 建立一个目录 . U0 d4 p+ Y, d. Y. S8 I: g* b
用 法: int mkdir(char *pathname);
& ]1 ]: B1 a5 `* I7 q程序例: </P>
" f! B, `$ ^6 P' s<P><FONT color=#0000ff>#include <STDIO.H>
. Y/ L: H; Y2 G' c#include <CONIO.H>
5 V" O; s6 ~( L5 z#include <PROCESS.H>
' ?- b2 l1 s" ?8 `/ P/ x#include <DIR.H></FONT></P>
5 P9 S* a/ W. ?/ f0 }<P><FONT color=#0000ff>int main(void)
) T# d& V7 B1 o  j7 N5 Z{
/ c& j: d3 ~1 d- lint status; </FONT></P>) g' P9 y! b7 U# P; `$ N+ p6 \& N
<P><FONT color=#0000ff>clrscr(); . b# \; V" @0 I! j3 q
status = mkdir("asdfjklm"); ( [4 p9 ^5 X  m2 U* V
(!status) ? (printf("Directory created\n")) : ; S2 j8 C; S; a! s& i: a
(printf("Unable to create directory\n")); </FONT></P>! V6 g" S0 C6 [8 q
<P><FONT color=#0000ff>getch();
; ~( E$ f; ^1 S- ]system("dir"); % e0 f0 ]) ?* K: m: z% Z* Y
getch(); </FONT></P>
' f. T4 a! z$ S$ |8 S# X7 L3 F<P><FONT color=#0000ff>status = rmdir("asdfjklm");
+ O$ j1 w+ _' }# w8 m- v- ^(!status) ? (printf("Directory deleted\n")) : 0 E: Q5 D! r, S) W7 v9 f7 d4 o
(perror("Unable to delete directory")); </FONT></P>
# u/ X# g$ e# q0 T8 w<P><FONT color=#0000ff>return 0; 4 R) T  J' r" }# ?; M7 L7 O
} " B% g5 l* n0 Y% u+ L
1 J$ L+ N+ A5 E, g; j9 a0 H
</FONT>
( Z9 l3 e! e. c' s: v! }% [% w& Z- y</P>
" G/ ]' O9 [' u$ J6 x/ R8 W<P><FONT color=#ff0000>函数名: mktemp </FONT>: ~( n8 I* j2 s3 I# I# ]
功 能: 建立唯一的文件名
5 O1 K, ]. q* M2 Q' |% x9 T用 法: char *mktemp(char *template);
. P; {( ~: x1 R+ R% n/ j* r程序例: </P>. ]0 R' i; X5 O0 `- D
<P><FONT color=#0000ff>#include <DIR.H>; t- @! V# W  z) D) c. I
#include <STDIO.H></FONT></P>' t9 @0 p& d  S
<P><FONT color=#0000ff>int main(void)
3 I. w! p, N  d6 x; B- }% Z{ / h( {2 ~  {2 `; F9 x
/* fname defines the template for the
$ v& j* k" q% U" A; w5 itemporary file. */ </FONT></P>
- y6 l( B" E7 v$ s$ O<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>
' A% p$ q3 o0 k<P><FONT color=#0000ff>ptr = mktemp(fname);
7 K- y0 a, Q0 a" @( M/ K- Uprintf("%s\n",ptr);
3 ?( ^  Z9 t$ `return 0;
+ G: j, J. C$ C5 A  a2 o4 L  U8 w} / A% a/ o7 _4 _* J; z  A7 j  a' q$ J
</FONT>
  n5 k. G7 v2 w2 B</P>
( x4 Q, _! {& K! Y& _# J0 C<P><FONT color=#ff0000>函数名: MK_FP </FONT>( v2 F% j. g5 d; h+ ~/ T2 V
功 能: 设置一个远指针
* H5 [, m0 ]& a+ H. t用 法: void far *MK_FP(unsigned seg, unsigned off); / u; r/ U. n  c- R* p
程序例: </P>
1 [! o  I0 J, F$ H. G<P><FONT color=#0000ff>#include <DOS.H>
6 d  c9 Z4 ]" {6 I  I4 t' V#include <GRAPHICS.H></FONT></P>" N& M7 d7 ~  s8 B3 I
<P><FONT color=#0000ff>int main(void) , A$ M/ e. v/ X1 Y' C$ v" }" Y3 A
{
, y5 }# u3 K; t2 V& `8 Lint gd, gm, i; 0 X/ ?; G: @4 X' ?& {
unsigned int far *screen; </FONT></P>  [% f1 Q' F- c( d( ~% _
<P><FONT color=#0000ff>detectgraph(&amp;gd, &amp;gm);
7 d3 J. ^; e4 E% P8 zif (gd == HERCMONO) & |" v1 ^0 K% y8 C7 H& p$ f
screen = MK_FP(0xB000, 0);
( e( J: h5 c' U$ A6 H4 b# Pelse
! m. q1 o, y$ q, uscreen = MK_FP(0xB800, 0);
1 Y4 x! f! h7 B# jfor (i=0; i&lt;26; i++)
5 K2 t. J8 H; o: y. i, @% iscreen = 0x0700 + ('a' + i); : N; B8 f; P' g9 l$ y
return 0;
' R* `8 y) ]" b0 `} & _8 L1 y  j" \6 V
</FONT>
9 m5 L# q* d- s- b$ L8 ^- _</P>
- ]4 O6 ^+ \4 S) i<P><FONT color=#ff0000>函数名: modf </FONT>
7 D6 t  r* t: H. d+ Y* r, R功 能: 把数分为指数和尾数 % [0 m  ?) R& ?+ g; l" [9 F. J$ a! I
用 法: double modf(double value, double *iptr);
  }5 H8 G- ?* |+ q程序例: </P>
5 @; S& i* L% B<P><FONT color=#0000ff>#include <MATH.H>
7 ^2 Y! b+ a" s8 X+ Z- J7 z! {#include <STDIO.H></FONT></P>
  r6 F" {& X- w% z1 T: u$ m<P><FONT color=#0000ff>int main(void) . N2 z& Q4 X) }8 x' _% t
{
# U4 R- {" V/ M) Xdouble fraction, integer; # I* l: ]3 z8 c
double number = 100000.567; </FONT></P>6 s" }- @8 U0 b# s
<P><FONT color=#0000ff>fraction = modf(number, &amp;integer);
' I6 }! l! U% nprintf("The whole and fractional parts of %lf are %lf and %lf\n", ; J& C2 {) d# \2 z
number, integer, fraction); ( L! u9 b. L1 _3 ^9 |2 a
return 0; 6 ?8 t: V; b5 |9 f0 U
} </FONT>
7 z. i" }; ?3 v8 p# F3 e6 y1 ], L# b. J1 E1 X7 S
</P>9 k( J0 P* V# `4 w: Q8 x' |/ l- t- E
<P><FONT color=#ff0000>函数名: movedata </FONT>* w2 j% ~$ E" ]' U$ B% C; Y+ Z
功 能: 拷贝字节
3 l& E" n( E* J. g+ ]# O用 法: void movedata(int segsrc, int offsrc, int segdest,
0 [6 i" r8 F2 z$ k) Rint offdest, unsigned numbytes);
& t) k6 ~! j, L6 P) r1 n程序例: </P>0 B; D+ r1 w+ w8 P5 Q" z, C+ e
<P><FONT color=#0000ff>#include <MEM.H></FONT></P>- W3 A  }3 L) v1 D! s: a- g
<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>
1 R9 r; h6 z% l) f<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */
* D- N9 p& N* _" {void save_mono_screen(char near *buffer)
% e$ @' ?  V$ ~& i{ 9 ~9 D0 _$ h* o8 C" O0 [$ X* \
movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);
$ k) ?) `, B: S" M: x/ ~0 d} </FONT></P>
( h4 E4 Y0 i  ^1 ^<P><FONT color=#0000ff>int main(void) % t+ W4 Z* d+ j6 u: |0 I2 a3 ]3 K
{
; O6 j! S4 m2 D+ b# O( @4 R% |char buf[80*25*2]; , z! i5 Y1 b) d/ |' Y! [7 s
save_mono_screen(buf);
0 O7 Q! b# j, f# \: `" o}
+ }$ _4 `8 ?6 l1 c' z</FONT>
+ a  G$ u0 w0 {0 A* k</P>
6 j0 p# [$ q0 }/ a, `5 q<P><FONT color=#ff0000>函数名: moverel </FONT>
7 I9 l9 j, W8 \1 V: c$ l功 能: 将当前位置(CP)移动一相对距离
9 F( N$ j. ^: L! g& Y3 r用 法: void far moverel(int dx, int dy); 5 f6 C& I# i# @: p) D
程序例: </P>& R1 `: P# K5 }3 ?, h
<P><FONT color=#0000ff>#include <GRAPHICS.H>% A8 o: T6 M4 \5 @2 X8 W4 v2 e
#include <STDLIB.H>$ f0 {2 k  Z* F( [7 w( y
#include <STDIO.H>
3 g4 f6 ^* ]# \9 z& x#include <CONIO.H></FONT></P># B" B+ M" f1 u, c# b7 X/ P; y6 t
<P><FONT color=#0000ff>int main(void) ( k7 L6 t# v4 X; w. j
{ 2 G0 X/ h5 E$ M. P$ Y
/* request auto detection */ ( Q" u* C9 {+ g! Z0 m
int gdriver = DETECT, gmode, errorcode;
9 Z) @# U1 d2 Gchar msg[80]; </FONT></P>/ e- n# M& Q9 ?# N2 \1 j
<P><FONT color=#0000ff>/* initialize graphics and local variables */
, M! V+ o/ N+ Hinitgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>
. B6 T  I# P' W' Y6 e/ I6 T<P><FONT color=#0000ff>/* read result of initialization */
( ]  }3 j: H1 S/ ~7 k( z9 @errorcode = graphresult(); ( l, \9 O& F2 {% P6 P, t
if (errorcode != grOk) /* an error occurred */ ; ]1 t$ T7 y  Q9 U# S! }
{
9 b2 K. i3 {' {+ H: `" Dprintf("Graphics error: %s\n", grapherrormsg(errorcode));
2 Q. Q0 F; J2 E# t+ m  s# ?printf("Press any key to halt:");
+ q6 ]3 ^, D; c. j# |  G: Q' `# Sgetch(); 5 l  K6 g- B8 M4 z$ Q6 ]
exit(1); /* terminate with an error code */ 0 ~/ |' z$ C' e$ N+ }
} </FONT></P>1 }+ g! @1 i: U/ R0 `9 N* _. A
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
5 ?3 Z+ F3 ]5 X& \0 z1 B& H* x. Pmoveto(20, 30); </FONT></P>, i. W+ Z3 n. \7 P4 V+ @
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ 4 i* H+ r7 m+ k
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>5 `. }6 m. c( H9 n) ~9 R; E! ~1 i
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
* l, K, v, l4 hsprintf(msg, " (%d, %d)", getx(), gety()); / K1 m4 A1 }) R( W0 S+ P
outtextxy(20, 30, msg); </FONT></P>
3 P, _9 G1 Q9 z/ L/ p<P><FONT color=#0000ff>/* move to a point a relative distance */ " v9 N8 z, ~" B# n8 Y8 [! {
/* away from the current value of C.P. */
  n( R2 w3 @: B, B, f% [8 e% I5 ^moverel(100, 100); </FONT></P>" \1 V- Z. x. X
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ $ \: \% F5 x3 B+ o2 Z- R
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>! r2 o% k2 ?, m0 X5 }
<P><FONT color=#0000ff>/* create and output a message at C.P. */ 8 a0 U/ t! M; w, P2 y, G" o
sprintf(msg, " (%d, %d)", getx(), gety()); 2 w8 P0 p! B8 N5 o" h' V6 y
outtext(msg); </FONT></P>- v: T7 n- F. ]- s, Z- i7 H
<P><FONT color=#0000ff>/* clean up */
! g, Y, R4 |$ `- H5 V3 Bgetch();
( F3 b" f) U2 v9 T6 L& t  M9 cclosegraph();
: r% D/ i; \4 Z3 R0 d$ Q/ breturn 0; $ Q! G6 ~5 f7 R: U! f
} ) y& y$ G' c/ F6 g
</FONT>
9 x2 J+ e; q" W5 y& M1 k</P>
4 E0 O: ?8 `! ^; Q7 W3 [7 h8 }<P><FONT color=#ff0000>函数名: movetext</FONT> # ]8 k7 j6 \6 P# \
功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域 , ?. t' g+ V* b1 [2 D
用 法: int movetext(int left, int top, int right, int bottom,
0 P1 a, R; }. W. ^5 bint newleft, int newtop); 8 ]& d$ |$ c3 z/ A0 o" q5 H
程序例:
0 }7 v- s( ^% T( x- V- a, h2 S<FONT color=#0000ff>#include <CONIO.H>
9 {% _7 t8 k; a9 X( M- G#include <STRING.H></FONT></P>7 w  @' B$ f% I8 d1 L
<P><FONT color=#0000ff>int main(void) 6 T& U) t9 w( L9 o3 P  b
{
$ E4 A4 y( y- q4 H2 K  _7 {; _2 j) B7 @char *str = "This is a test string"; </FONT></P>
9 h  Y0 C" K) {9 c<P><FONT color=#0000ff>clrscr(); * y& C7 Z2 B" ]1 T& z2 J
cputs(str); . J$ G1 J6 x4 d! o% v( u" I# }6 m7 o
getch(); </FONT></P>* n1 u4 Y) h8 D
<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10);
$ G% j9 f$ M* M7 f) s8 B% P* {4 |1 xgetch(); </FONT></P>
2 i6 `/ ~# z6 A, h: I4 h<P><FONT color=#0000ff>return 0; , G! w' v/ `5 |& a8 z
}
/ J) F# x$ E5 r6 A& g0 u' Q
2 s6 @+ c1 k$ E5 v( s# G7 N</FONT></P>( K9 C. [% I6 t
<P><FONT color=#ff0000>函数名: moveto</FONT>
% Z" P" v9 V0 g" W$ U6 G" m功 能: 将CP移到(x, y) % s: a5 U* H) F1 I5 c
用 法: void far moveto(int x, int y); 9 Y: m1 g/ o. z
程序例: </P>
2 J, O% h; M0 a0 }( Y# Q1 z" ]<P><FONT color=#0000ff>#include <GRAPHICS.H>
5 s$ N0 n) Y' p* [0 V#include <STDLIB.H>
6 c" m  f2 ]- S2 w  O#include <STDIO.H>( k8 D) ?9 M9 P) q
#include <CONIO.H></FONT></P>1 H( @3 i3 i4 ], c) B- A( H
<P><FONT color=#0000ff>int main(void) ; c; V2 n0 C+ \0 G, @1 R- k
{
4 _0 j! K( P& Z* {( i/* request auto detection */
7 \( z# r3 N& v! W) @7 V- M6 Sint gdriver = DETECT, gmode, errorcode;
8 t8 A* _( }7 ^char msg[80]; </FONT></P>
' P2 B# t  w  J0 k  F+ e0 V! X, L<P><FONT color=#0000ff>/* initialize graphics and local variables */
' U) F5 k( n0 S% P) G! a, ^( N6 U( ]initgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>
) r8 C5 a# g/ W( M- N" _8 {<P><FONT color=#0000ff>/* read result of initialization */ , S" G' i8 y5 ]( g, x
errorcode = graphresult();
* O- _9 F  D( H" B0 |: i) j9 {0 Jif (errorcode != grOk) /* an error occurred */
5 n) p  y# B) S; K; K* e2 X" \. w+ X{
+ d) j) s8 ~8 N0 d( R6 [% Dprintf("Graphics error: %s\n", grapherrormsg(errorcode)); 1 i* Y; V( Z- {+ n! H% g6 ^2 r2 V+ \
printf("Press any key to halt:"); # i4 ?. Y, x: }
getch();
" g& G3 d  c7 V9 e0 M* s5 Y, pexit(1); /* terminate with an error code */
4 W* Z+ ~% a8 P' _; t) Z1 L3 l3 Q} </FONT></P>! z) y2 T) r6 m" T" f8 n7 e
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */
1 y- Z* M8 u, X, L0 tmoveto(20, 30); </FONT></P>
6 e2 K# E9 y" K) S/ ?& S<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
' e& k: q# V2 G1 y; j) s( Mputpixel(getx(), gety(), getmaxcolor()); </FONT></P>7 b% i/ |1 A+ H3 o
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
3 u; ]& w5 @' k4 x- U5 hsprintf(msg, " (%d, %d)", getx(), gety());
/ R8 l$ I* F( \. I2 @outtextxy(20, 30, msg); </FONT></P>" }0 M( N4 {& U& K# L8 D8 _4 I
<P><FONT color=#0000ff>/* move to (100, 100) */
7 t8 Z% Q, d) \+ rmoveto(100, 100); </FONT></P>
% G! U! Y* p2 B" E$ f8 M<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ . [1 G0 _7 d( q1 y# B
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>
: Y  [; G2 \4 f* |! P7 i2 j0 M- ?# P<P><FONT color=#0000ff>/* create and output a message at C.P. */ 5 h& `" x& o& F  [
sprintf(msg, " (%d, %d)", getx(), gety());
0 Y9 y3 R8 g& L7 n. Q3 Wouttext(msg); </FONT></P># u- X5 k* v  w1 D' n8 J, q9 h
<P><FONT color=#0000ff>/* clean up */
: @; E( @; B( @5 J$ A, Lgetch(); 1 k) T. H2 \7 }/ D' s) y2 I' ~' W" x
closegraph();
" L7 Q' o( n, f+ ]return 0;
; t- l. g1 g7 r7 A}
% Z  _7 ~4 Y/ w# P$ |! G</FONT>
& s: J+ S, a8 ]/ _5 W2 ?</P>7 y5 ]$ m" D/ d2 }* a' i
<P><FONT color=#ff0000>函数名: movemem </FONT>
5 A+ _: v# Q# S功 能: 移动一块字节 - Q* l% I: A3 g& ~
用 法: void movemem(void *source, void *destin, unsigned len); ' F5 n# {7 _, J# n% O) k
程序例: </P>* j, a9 r6 Y4 v( v$ P
<P><FONT color=#0000ff>#include <MEM.H>+ m$ `8 f* s! F$ X, ]
#include <ALLOC.H>
4 d  {7 e2 j2 M/ K4 c#include <STDIO.H>+ _- P! j# u) [! X
#include <STRING.H></FONT></P>
4 O- N- r( Q" }$ q& ]& u6 V1 @<P><FONT color=#0000ff>int main(void) % }2 _0 r, T- |) N( v$ |4 E4 W
{ " u1 |+ O1 m5 M* S$ b" A) D, M2 [
char *source = "Borland International";
( k, \5 y: J7 W# L3 Z2 w- [char *destination; 0 ^3 |1 J5 ~$ H
int length; </FONT></P>
/ K& p/ p% [3 L1 e# U3 i<P><FONT color=#0000ff>length = strlen(source); 5 x) R) i' i8 l  N6 x) m; @
destination = malloc(length + 1);
& Z% V  k% {/ V, o. v& p: u/ V6 vmovmem(source,destination,length); ; e' Z! l% Z; |. W; Y$ {$ F
printf("%s\n",destination); </FONT></P>5 t9 C9 Z1 ]0 y7 _
<P><FONT color=#0000ff>return 0; ) H. I( c/ X, b: A/ Z5 ?6 c: {. G/ R
} 6 A7 R; w( d2 f0 M

2 Z0 @1 }1 K& ?4 d; M6 T</FONT></P>  ?  x- L3 [' C5 T2 z3 f
<P><FONT color=#ff0000>函数名: normvideo </FONT>
' d6 J. J" J' |" O功 能: 选择正常亮度字符 * u6 W/ Q# x- R, r; p. X; p
用 法: void normvideo(void);
8 O) E) p$ h& r* x7 b# i程序例: </P>
- X; h) o. d8 Y$ K  {. {<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>
( w# Y* X& ?# N/ u<P><FONT color=#0000ff>int main(void) 5 ]; ~9 Q3 `5 \/ l5 ~7 V9 v, ~
{   V! \: w% d5 Z: X
normvideo();
. J% V0 f* I( H+ n4 a: Mcprintf("NORMAL Intensity Text\r\n");
% a" [& f+ l" a  q! dreturn 0; 6 N/ @9 f3 S; L0 f7 g
} 3 c; K# i6 p# L8 O6 t5 B, w3 A
) I' m) b6 d/ M- y. h' ]1 I
</FONT></P>. {3 j/ Q" E+ S
<P><FONT color=#ff0000>函数名: nosound</FONT>
2 t, m6 _# f$ Y9 a* Q% ^) u4 T功 能: 关闭PC扬声器
7 e" s, U, o5 }用 法: void nosound(void);
2 x. W3 e  ]7 e  f7 l: O  \程序例: </P>" m$ E' E6 q  X4 F# d  R4 [% [
<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>
  y  b, }9 Z5 G( z" q' ]<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity.
5 N# R1 I8 O' o  ?+ E, r* @! ?This was determined empirically in Australia, where a new factory 4 K1 x+ S! e4 S8 U* ^6 ~6 s
generating 7-Hz tones was located too close to a chicken ranch: 1 i5 W8 ?6 O( K
When the factory started up, all the chickens died. </FONT></P>+ L, s) H; Y& q9 W) ^8 ^$ N0 b
<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone. ) _2 Z  y* }; \
*/ </FONT></P>& g" V, ?; P0 m6 V# Z: |
<P><FONT color=#0000ff>int main(void)
5 D7 i- A- A1 v{
/ v9 e5 K; `/ B# Z- osound(7);
0 s" o2 q' y* n( W) P  qdelay(10000);
) \; I# x! ]# S0 v' Q) ynosound(); $ N; l$ i) _( e+ \
}
( K1 j& f( u5 j7 q' |% A</FONT></P>




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