数学建模社区-数学中国

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

作者: 韩冰    时间: 2004-10-4 02:57
标题: 函数大全(m开头)
< align=center><FONT color=#0000ff size=3><B><FONT color=#cc0000>函数大全(m开头)</FONT></B></FONT></P>
* p5 I7 C7 v6 h, V0 c3 K) g< align=left><FONT color=#ff0000>main()主函数
2 A/ H3 I- W3 n. Q8 g9 R6 A</FONT>每一C 程序都 <B><FONT color=#000000>必须</FONT></B> 有一<FONT color=#ff0000><B>main()</B></FONT>函数, 可以根据自己的爱好把它放在程序的某
: ^  n1 D6 H$ Q  h个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放
0 m0 C% F; v. y* T0 o在哪个地方, 以下几点说明都是适合的。
$ o$ y/ T8 @$ ~# Z2 v) z! T! P" H<FONT color=#000099>1. main() 参数 </FONT>
- ^* Q& a) f" j& L) P0 e$ L在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
: R$ D& s1 I: m8 R! j% z* h* argc: 整数, 为传给main()的命令行参数个数。
" W: @  I( u: H& E8 ]' a. ]2 I* argv: 字符串数组。 ; V. V2 E# g5 c( l( F( k; u
在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0 ( R/ ^0 I# c: C- r- R$ d$ _, ]' z
以下的版本, argv[0]为空串("") 。 , z8 F9 l* ]6 ]7 r: {( Z- f9 F
argv[1] 为在DOS命令行中执行程序名后的第一个字符串; + I- s( w: r- @. ^$ U, @- L
argv[2] 为执行程序名后的第二个字符串;
+ s4 e+ r. k# O! P- j7 b- C. F4 j0 D...
( V5 \0 n, s  Hargv[argc]为NULL。 9 w% E2 `" ~5 f; f7 F! n: l# C
*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符 2 {% H9 e0 Q+ E8 c! S
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:\DOS, C: ( T3 ]3 N7 J0 ^& b4 }0 M! D/ @
\TURBOC(对于PATH) 或YES(对于87)。
+ W: F7 E7 t+ Q3 d9 h$ z  b. QTurbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中 . G; W) o1 C. @
说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序 ) p% a" N* ]8 C+ N+ E3 [! A7 N
的局部变量。 ; ~+ y7 y8 ?. |3 O
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
; I% a9 p, i6 b* z- h) D的例子:
2 c: n. Y# U* B! b3 |<FONT color=#0000ff>main()
0 e9 j0 u; l( v# S2 Wmain(int argc) 4 m5 I; p  Z: j
main(int argc, char *argv[]) % K  ~$ Y( q( s- N
main(int argc, char *argv[], char *env[]) </FONT># F% S# \. e7 K# d
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不 + u0 C0 F2 ?( \0 |
用argv[]的情况。
" G' U$ u) e, R4 E! b% Z6 q6 L以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
$ L; b  B/ V/ a  F$ b# G<FONT color=#0000ff>/*program name EXAMPLE.EXE*/ 3 K- p1 h8 m/ b! j" |
#include <STDIO.H>& U* |) g* L% k; I! {/ `% r
#include <STDLIB.H>
; A7 X+ F- N* s/ b0 |, Qmain(int argc, char *argv[], char *env[])
, L- l7 j$ q* W- z8 d% T{ , S( b. J$ y& x/ S
int i;
) _$ c  F. s- a& A+ b+ A* a% Xprintf("These are the %d command- line arguments passed to 3 o# ?. `3 m9 A8 G9 p
main:\n\n", argc);
/ D) L; b% M8 p$ mfor(i=0; i&lt;=argc; i++) " o% w* w% P' r
printf("argv[%d]:%s\n", i, argv); 5 v5 K. @7 F9 ]; X' _
printf("\nThe environment string(s)on this system are:\n\n");
" W' a* v' S5 }- P& ]for(i=0; env!=NULL; i++)
3 i; q3 d% o1 [! d; e% Uprintf(" env[%d]:%s\n", i, env); ! ?. }, ]) _1 D
} </FONT>
5 O+ P# A  b& O: \, W# y3 d如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: & @$ ^% j4 o: N: k9 \5 W
C:\example first_argument "argument with blanks" 3 4 "last but & r6 f9 o7 |$ L' s" K# B* U
one" stop!
& J3 F! c) [9 ~, M; f8 w+ c注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument - \/ h* b  i9 Z, e$ I, L8 _
with blanks"和"Last but one")。 % O5 q, t& ^- J9 Z/ t) D4 _
结果是这样的: & k- o9 Q7 b8 |4 G
<FONT color=#0000ff>The value of argc is 7
# j  P( p* H3 RThese are the 7 command-linearguments passed to main:
4 H5 K+ M4 Z2 B0 s8 [& xargv[0]:C:\TURBO\EXAMPLE.EXE 8 V: A( X  _' T) |! B
argv[1]:first_argument ! S9 r% T+ ?) g9 w( K/ F4 u/ f
argv[2]:argument with blanks . L, k, s$ V: S
argv[3]:3 - W' E- f3 q+ y6 U
argv[4]:4 $ m$ l# K: x/ O# x7 x1 l# v) a
argv[5]:last but one
4 n5 c9 M2 X2 O+ u9 K2 ]argv[6]:stop!
3 b' i  |  l4 P: _! \9 n1 ^# u$ margv[7]NULL) # f) \0 F: i* B+ B5 l7 l
The environment string(s) on this system are: ) i/ s" w* k8 j2 l' `6 u! }
env[0]: COMSPEC=C:\COMMAND.COM 7 A4 l8 v0 h  s" g+ v! K- Y
env[1]: PROMPT=$P$G /*视具体设置而定*/ * S8 H2 ?0 D$ @
env[2]: PATH=C:\DOS;C:\TC /*视具体设置而定*/ 2 D0 l9 I9 d* X9 @
</FONT>
+ a6 d5 e8 v7 M. V8 T" Q3 `, b' l6 f3 O应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
2 S- c( z4 [) ]& l8 }括参数间的空格), 这是由DOS 限制的。 ; L% I& l9 p# h' O" s1 n
</P>
/ s/ d2 e! C6 `8 K5 |- S<><FONT color=#ff0000>函数名: matherr </FONT>
) g7 P; ^! {  K; \* E8 x功 能: 用户可修改的数学错误处理程序
( g% s3 \. V/ J) J- M; I$ I用 法: int matherr(struct exception *e); 8 X1 g$ ]4 c3 J8 D6 d, u
程序例: </P>
3 c/ U2 y9 K0 D; j9 p& \( z<><FONT color=#0000ff>/* This is a user-defined matherr function that prevents . g9 M: V6 _! @9 w7 j3 h  C: C* Z1 M( |
any error messages from being printed. */ </FONT></P>& L; O5 Z+ N0 i" z. f( N7 A5 x
<><FONT color=#0000ff>#include<MATH.H> </FONT></P>0 K+ D! H/ V% g8 x
<><FONT color=#0000ff>int matherr(struct exception *a) 7 m1 J% P' _! ]( k& t* J% H
{   i' i: g8 ~( w! [8 g( J# H' C
return 1;
& Q8 e; E+ H$ M' o}
! O" ^, i* l7 i2 O4 Y</FONT>& o" M  f/ Y/ K; g# i$ E  U& G$ w2 e

" W4 X1 n% b& {# \# L5 c6 L</P>
# N9 B% Y6 l* s/ s- `, k) Q! D<><FONT color=#ff0000>函数名: memccpy </FONT>
6 n6 t5 D! _8 x5 p( j6 X' H* A功 能: 从源source中拷贝n个字节到目标destin中
( M1 Z) ~" |1 W" L用 法: void *memccpy(void *destin, void *source, unsigned char ch,
+ s* w# @. `& O. e" junsigned n); ! ^: U" k/ h0 Q& u  b; B5 R
程序例: </P># I! X: y' g6 Q  s
<><FONT color=#0000ff>#include <STRING.H>
+ s' p( U$ N$ n. q- D$ j. }; |#include <STDIO.H></FONT></P>) Z- c9 n4 i7 f8 V1 O
<><FONT color=#0000ff>int main(void) $ g/ w5 m* J# P) |3 k
{ ; d% x: \3 |% A! [# B5 v6 B
char *src = "This is the source string"; 7 \+ d6 B: U; u
char dest[50]; , Q% G' S' w4 l) M" ]
char *ptr; </FONT></P># P$ Z4 Q% R1 t7 N* D1 E+ }2 `& r. b
<><FONT color=#0000ff>ptr = memccpy(dest, src, 'c', strlen(src)); </FONT></P>& V! T4 M, H5 p, G, v
<><FONT color=#0000ff>if (ptr) 1 o/ J8 }8 \. r* A( _; F
{
% X3 F8 S8 p: b  G" J* ~*ptr = '\0';
1 m+ {5 B  _4 C% q8 k! w5 K# qprintf("The character was found: %s\n", dest);
1 j8 P: f* y9 F* G' x/ W}
1 `# |- V3 x% z0 Celse / Z* G8 M, I9 d/ {. r/ |2 y
printf("The character wasn't found\n"); , r, k* Y1 c" V) p  n1 f
return 0; 0 Q' t; R1 I* U! s% R# a& D
} 0 \0 y) L  S* x4 s$ F+ H; z
</FONT>
3 P; a! Y/ S$ Q  W* h2 P</P>' x6 x8 h7 g1 I: w
<><FONT color=#ff0000>函数名: malloc</FONT>
* b# E6 F$ |, W功 能: 内存分配函数 . {3 a0 S1 ^# R+ u
用 法: void *malloc(unsigned size);
0 o0 ^0 R5 b2 r" }: a  h; m6 x1 z程序例: </P>
" w" s, v5 m3 |<><FONT color=#0000ff>#include <STDIO.H>- a; T; Y7 c+ _. \* r" ^# t
#include <STRING.H>) d4 u: e7 o) s% h2 {0 s2 x
#include <ALLOC.H>
+ `6 P7 _' F' B#include <ROCESS.H></FONT></P>
' v. T, O0 k0 k+ w6 c% M$ [<><FONT color=#0000ff>int main(void)
, J+ g* M+ ^5 h" U5 ~{ 9 Q8 {+ x+ ^7 Y* A6 w: D2 \6 d
char *str; </FONT></P>( x1 [" S' _1 {
<><FONT color=#0000ff>/* allocate memory for string */ + J  y# `1 m, E- e
/* This will generate an error when compiling */
, i1 n# u8 B0 E% X1 f/* with C++, use the new operator instead. */ 3 S; C7 d' m' ~# ^. b$ Q% I* O
if ((str = malloc(10)) == NULL)
4 G, Z( S7 \0 z+ V! I{
* u  n6 L5 {0 m7 X3 jprintf("Not enough memory to allocate buffer\n");
  E: I3 ~$ M3 H, ]. ^) \exit(1); /* terminate program if out of memory */ # V9 y3 }$ h+ c0 R0 T! B0 W  h
} </FONT></P>! P1 g4 S: B  ~+ o5 C
<><FONT color=#0000ff>/* copy "Hello" into string */ $ g5 P7 l+ d2 R% P
strcpy(str, "Hello"); </FONT></P>% q/ l; T! f; x# g" I- F
<><FONT color=#0000ff>/* display string */ 2 X. S8 d9 V/ `
printf("String is %s\n", str); </FONT></P>: p; Q+ u0 C3 }8 Q$ l! V
<><FONT color=#0000ff>/* free memory */
! D, Z3 t) z0 B2 r3 [/ Yfree(str); </FONT></P>
# m( i5 X3 o8 z<><FONT color=#0000ff>return 0;
: e2 U. B* i. c9 l2 f0 W) H. z}
2 |" q' k. b5 l- y( p2 R" Y
' J" M, U1 i6 U$ N</FONT>2 |2 b3 ~6 q. `% a4 E9 \
</P>9 K% W5 i8 W1 f4 i+ F
<><FONT color=#ff0000>函数名: memchr</FONT> * o, W- ~) r8 }6 J+ M8 q
功 能: 在数组的前n个字节中搜索字符
& o/ N4 D1 p! \; Z: N6 C% d; O8 H用 法: void *memchr(void *s, char ch, unsigned n); ) C2 Q6 ?$ B& P# |  h+ ?
程序例: </P>
. [( g1 F9 m: A" H& Q& P<><FONT color=#0000ff>#include <STRING.H>
) k5 j5 b2 V) W#include <STDIO.H></FONT></P>
7 C( |# s6 J" G0 R0 A  Q1 t/ a<><FONT color=#0000ff>int main(void)
3 w5 H  \+ ~/ V) F{
- \. G' N8 j% K  W: Ichar str[17]; * n/ S+ C' D& x2 l/ S1 `
char *ptr; </FONT></P>) ^' T* H: D& i) c+ l" P. A6 d" F
<><FONT color=#0000ff>strcpy(str, "This is a string"); 3 z) P- A7 ?; b' e5 V
ptr = memchr(str, 'r', strlen(str)); $ t3 k; Z/ {2 G% K8 C4 k0 c9 j: d
if (ptr)   e  N* [7 Z! [  u  Y/ D3 L3 q
printf("The character 'r' is at position: %d\n", ptr - str);
; q, d/ s! w- m. O5 X  Xelse
: N* Z* m7 \7 K7 `7 f- W& |4 m/ N1 yprintf("The character was not found\n"); . o% h  `3 \% w+ r& P3 F
return 0;
# Q3 J& R# x, _8 I2 r* k} # r/ T/ w1 }% M/ P
</FONT></P>
$ K0 x; N/ S& ~+ T4 Z: d9 p0 A<><FONT color=#ff0000>函数名: memcpy </FONT>
/ ^$ }/ T  }; P( G$ e功 能: 从源source中拷贝n个字节到目标destin中 7 @& K9 e5 f" f; B6 Y6 B" \. y
用 法: void *memcpy(void *destin, void *source, unsigned n);
: r6 }  p) Z2 D/ H7 b程序例: </P>% e& h: F. [* s9 ^
<><FONT color=#0000ff>#include <STDIO.H>* u% y- f/ X' O/ F2 y' v
#include <STRING.H>
: D. K( u- A* J8 U: Oint main(void) . N- h0 ]4 j/ L: N( e* O, [
{
2 C+ u+ n- W- n0 q2 o( K% Qchar src[] = "******************************"; 8 T  t# y& w- L
char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709"; , [: K5 n. X! E" W/ y4 U
char *ptr;
8 f' B% U& a: W& Hprintf("destination before memcpy: %s\n", dest); 4 {4 j: r9 p0 h% b  {( m; y4 K+ e7 \
ptr = memcpy(dest, src, strlen(src)); 0 i% y+ |# H! D8 G% o3 q
if (ptr)
6 B8 u" `' N! S6 r% hprintf("destination after memcpy: %s\n", dest); ' E9 `1 q# r, U% @9 A. A
else
! f% Y- \4 X; U; O1 rprintf("memcpy failed\n");
. t, @- y& o3 k' areturn 0;
# e& C. H: ~2 h6 Q2 O} + N+ f: r- e- V0 p
</FONT>
6 a: U1 R0 k8 R. h</P>4 F$ h' P& Z& Y/ l3 H' i
<><FONT color=#ff0000>函数名: memicmp </FONT>; {) E! M: V1 S  `; j
功 能: 比较两个串s1和s2的前n个字节, 忽略大小写 + C6 `2 a# m. @' A3 @
用 法: int memicmp(void *s1, void *s2, unsigned n); - M( X& R/ m1 l0 L- x, {9 S
程序例: </P>6 W5 e8 T) m4 J3 R$ G, Z3 I$ o9 `0 X. Q
<><FONT color=#0000ff>#include <STDIO.H>
9 g" [- \* e+ X7 e#include <STRING.H></FONT></P>
0 _/ b/ t/ G; B) k7 d& Z1 o0 I<><FONT color=#0000ff>int main(void) 2 M( `" l3 R7 A4 B, h0 F( t
{ ; v, D3 n- f, X8 o" ]2 i
char *buf1 = "ABCDE123"; . H1 x+ U' p+ _2 J5 O
char *buf2 = "abcde456"; 8 J1 L5 f4 d, |. J& }% f
int stat;
1 }8 q! R8 E# a$ }$ Z- r( U1 Y& bstat = memicmp(buf1, buf2, 5);
2 p# c7 b3 ~( `0 {$ dprintf("The strings to position 5 are ");
# K8 v+ ~! K' e% Q. ]if (stat) ) L' a( S9 t+ `& R
printf("not ");
5 c6 H# M, q3 V/ e8 fprintf("the same\n"); 0 K, R$ S" J. e6 M, R4 f* _: K2 q
return 0; . _- y  s  K( ]4 M+ H# W5 L' @* F
} ( `& N0 ?" s8 ~8 V+ x6 ^7 O
</FONT>
( X9 D1 D( }# L+ L" c* Q) K, R) U- y: E</P>
# e( c' L+ Z, o( ]2 y  p<><FONT color=#ff0000>函数名: memmove </FONT>. D- d6 M4 ~" \# ]* t) t2 p+ Z
功 能: 移动一块字节
$ }8 _* x3 B, M" c& o用 法: void *memmove(void *destin, void *source, unsigned n);
' u6 i4 T: s9 f& {+ G, D: z1 ~程序例: </P>
  I: [6 i- m* o4 U  N; k<P><FONT color=#0000ff>#include <STRING.H>
0 j) c' p, g  Z) N2 \#include <STDIO.H></FONT></P>( Y4 m8 Q  g: N
<P><FONT color=#0000ff>int main(void) 4 A% B0 \5 _; X: n) X) D, B! d
{
' k, w  @0 f4 q; |3 P9 R  {char *dest = "abcdefghijklmnopqrstuvwxyz0123456789";
* E8 C7 z# g% e7 Ichar *src = "******************************"; 0 C5 @, A+ K+ i( p8 F
printf("destination prior to memmove: %s\n", dest); 3 [) D! a% a4 [9 M
memmove(dest, src, 26); ) X# _4 G3 t/ E# |/ e
printf("destination after memmove: %s\n", dest); 0 u5 M2 L6 ~$ W, V& U8 l+ c" Y
return 0; 2 g4 N  e6 |+ Z: J" G- @
} - s' V2 D, K& p" {+ C* o
" J$ @- s5 \5 c& U5 X" a- e
</FONT>
6 ^6 x. F7 W) v0 E2 l6 H$ U</P>! G  x1 o. O7 ?; h( }( T
<P><FONT color=#ff0000>函数名: memset </FONT>
" a' E' u& T# h) ], v功 能: 设置s中的所有字节为ch, s数组的大小由n给定 1 S" ?- K' f3 P" Y# {1 I
用 法: void *memset(void *s, char ch, unsigned n); ( h) v& `+ c- h) K
程序例: </P>
: L3 s  F1 V# v<P><FONT color=#0000ff>#include <STRING.H>2 n, a1 F) D) h( m& }# W5 j
#include <STDIO.H>8 ^% [- l& }/ [# p5 m) ?; E
#include <MEM.H></FONT></P>
0 [' i/ P+ [! L<P><FONT color=#0000ff>int main(void)
0 E3 x! k0 D' y* n4 i{
9 d) o/ z: C$ H5 R9 t" Tchar buffer[] = "Hello world\n"; </FONT></P>( W, w: L+ b8 y' M1 Q+ q/ g* G
<P><FONT color=#0000ff>printf("Buffer before memset: %s\n", buffer); ; I: E* z: E) y1 C2 E5 S
memset(buffer, '*', strlen(buffer) - 1); : h4 ?! j" J6 D6 g; h
printf("Buffer after memset: %s\n", buffer);   d4 E$ O* m$ ?* n, ^
return 0; 3 E$ m  r, q, z1 C
} </FONT>8 K  {" S# V! ?* A
' J7 e0 W0 [8 I* q1 W  Y
</P>
- W- k, C6 T+ c9 H* R" Y; V<P><FONT color=#ff0000>函数名: mkdir </FONT>
: O. _$ Q- d3 g7 y" J! D功 能: 建立一个目录
6 r3 r( }( F( U, c1 d7 ?用 法: int mkdir(char *pathname); 0 M* N  b3 Z' M' ~) R6 i8 T; L. f
程序例: </P>8 S% e2 S9 C0 Y/ E
<P><FONT color=#0000ff>#include <STDIO.H>% r7 [2 W% d0 H
#include <CONIO.H>/ _/ J. S  c5 [( d
#include <PROCESS.H>6 ]5 O! \) Q7 ]9 d6 }4 K# i
#include <DIR.H></FONT></P>
- n- k6 N3 n& }3 l# d& ~0 ^2 O<P><FONT color=#0000ff>int main(void)
2 l. |& ^4 [6 ~: u, Z5 Y1 @{
2 q# D; n/ S3 aint status; </FONT></P>& S' C: \( A2 R
<P><FONT color=#0000ff>clrscr(); # h: m. r& I8 O" \8 H$ _
status = mkdir("asdfjklm");
, Y2 v$ U# J+ Z" P(!status) ? (printf("Directory created\n")) :
/ w" S5 u& F. v/ ]) d(printf("Unable to create directory\n")); </FONT></P>5 L3 Z  s4 O3 s; t2 y0 x1 d
<P><FONT color=#0000ff>getch();
& S$ @  X# q/ o% [' A$ {% f2 [system("dir"); " e% t; x- Z) T/ W
getch(); </FONT></P>* c. i& }1 F! d8 q
<P><FONT color=#0000ff>status = rmdir("asdfjklm"); . a+ p: S# h+ ~- e& g- u
(!status) ? (printf("Directory deleted\n")) :
8 i- R; h; P, |7 C' t(perror("Unable to delete directory")); </FONT></P>
! d7 A' m* K2 X+ f# k# B; \<P><FONT color=#0000ff>return 0;
* ?' r1 k5 ^; Q4 N} 0 N7 |+ O3 U- ^6 h! \! L
9 R/ E, o$ p  ?* B4 I0 a/ O( [
</FONT>- R/ c- b6 o* f  D% Z9 m
</P>$ S( u$ Q  w7 ]# \& t
<P><FONT color=#ff0000>函数名: mktemp </FONT>
# d0 }% v2 N3 d3 m0 h6 B8 f0 b功 能: 建立唯一的文件名 7 b& @' ^: Y! P1 @2 O+ r! f0 Q: W
用 法: char *mktemp(char *template); . P0 ^/ H9 w9 T$ u
程序例: </P>' ~( v/ D! ^& I8 I3 e1 r
<P><FONT color=#0000ff>#include <DIR.H>: c9 l! ?! g. U7 O. @# _* Y3 n
#include <STDIO.H></FONT></P>
7 c1 T1 S2 w; _4 U0 |) M0 I<P><FONT color=#0000ff>int main(void)
9 e. G& A4 u4 \" _; M7 ]. ]{ - ]4 t8 n& L; ]' j: V7 P* n
/* fname defines the template for the 1 C' C8 N& Q+ `
temporary file. */ </FONT></P>4 Y" m( `! z4 r9 k7 F
<P><FONT color=#0000ff>char *fname = "TXXXXXX", *ptr; </FONT></P>5 v8 D$ }' z# O% d9 ~
<P><FONT color=#0000ff>ptr = mktemp(fname);
& C' q* q5 x" o( R' X! Xprintf("%s\n",ptr);
( L% k1 _* [$ {return 0;
. n% Q( k4 K5 Z" _}
4 T4 i' R$ v0 q</FONT>3 o) ^, ]6 T1 x: c
</P>" e! H: M+ y# I. z
<P><FONT color=#ff0000>函数名: MK_FP </FONT>7 {) S; H, @' a8 a
功 能: 设置一个远指针 3 ^' n6 e4 R7 I% W* C
用 法: void far *MK_FP(unsigned seg, unsigned off); ; L4 F+ P) g: X! F3 Y
程序例: </P>! ~2 B6 U; E6 [8 X
<P><FONT color=#0000ff>#include <DOS.H>0 U0 b4 D$ `# r9 u$ N7 p, E/ C+ w
#include <GRAPHICS.H></FONT></P>
& g8 j; ~, |5 _( U9 c<P><FONT color=#0000ff>int main(void) / F9 [; X! a, k, j2 [# o
{ # |$ ~( x" t) D0 j3 e) `# |, W! d) n( r
int gd, gm, i; ! n; L4 V# U3 r( i/ |
unsigned int far *screen; </FONT></P>
+ I) L* x# O$ ~+ y& y1 G3 f' g<P><FONT color=#0000ff>detectgraph(&amp;gd, &amp;gm); 6 l" @; E1 Q. P* U
if (gd == HERCMONO)
$ ]# |2 _) E: ]screen = MK_FP(0xB000, 0); # z, C, [( o, s
else
7 O& p: J9 @/ C( z4 z- H" _2 t# i5 Hscreen = MK_FP(0xB800, 0); 9 _2 S$ C5 y# [7 [% ^  v# K* V, `
for (i=0; i&lt;26; i++) ' m. ^$ s: k) z6 X. U
screen = 0x0700 + ('a' + i); - o& B7 G' ]! A; O$ I6 z/ v
return 0; ; h' }3 p6 ^. a( V1 a  v
}
( ?% x* m. P4 k; @; l% i</FONT>
/ q( H. W: n$ D$ m  C6 V8 b</P>! Q4 g( Z% O0 o  d
<P><FONT color=#ff0000>函数名: modf </FONT>, P# y5 i. O# T7 \8 D8 K9 d
功 能: 把数分为指数和尾数 + K; v& ]5 c# G# s# L/ B
用 法: double modf(double value, double *iptr);
+ @0 m& n* h9 T' r' V' D! w5 X! D程序例: </P>
& C0 q1 m/ a6 s<P><FONT color=#0000ff>#include <MATH.H>
% m! b& b0 Y' r8 N! q#include <STDIO.H></FONT></P>
  s: P/ ?% N6 q! a. E<P><FONT color=#0000ff>int main(void)
# Y$ h: I0 W8 w# _( S. B* |{
) B) t! r" {, S* |. {- F, @double fraction, integer;
; I! D- A# e3 vdouble number = 100000.567; </FONT></P>( G; C& n4 w5 B
<P><FONT color=#0000ff>fraction = modf(number, &amp;integer); + a) u& w4 v; |
printf("The whole and fractional parts of %lf are %lf and %lf\n",
$ a0 n* J' U. i% z& [5 fnumber, integer, fraction); , d. p  j; H5 o" h% y
return 0;
; Q8 f2 x3 s" Z4 `4 L5 k} </FONT>, V0 \( |* Y  {2 ]- R2 Y! O1 a
, n- {" G) z. O3 o! u7 S
</P>
: }, `- V( C& [8 X1 j; Q9 J<P><FONT color=#ff0000>函数名: movedata </FONT>3 W( ?& A2 ?) k" F+ s% Z4 ]6 A* Q
功 能: 拷贝字节
! X6 |0 M( R' j6 g, P用 法: void movedata(int segsrc, int offsrc, int segdest, 7 c. B( k3 _# u
int offdest, unsigned numbytes); & C' z3 a) n- x3 T4 L' }, x5 I
程序例: </P>
& x* W6 b" D' F. k% l<P><FONT color=#0000ff>#include <MEM.H></FONT></P>
# K# d' d6 J- `. Q& c2 |9 O<P><FONT color=#0000ff>#define MONO_BASE 0xB000 </FONT></P>
6 q& F8 f7 k3 E! g) O, r- y<P><FONT color=#0000ff>/* saves the contents of the monochrome screen in buffer */
5 y' r6 y& J/ l- {5 m( n9 e# evoid save_mono_screen(char near *buffer) $ @9 g: C: L! X/ m$ O$ k, H
{
* L# c( b7 u4 H4 @movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);
9 A8 H3 k0 L: g; o8 l} </FONT></P>
. K1 w0 R. o2 |2 O/ M5 B<P><FONT color=#0000ff>int main(void) - @9 e" e* E9 O" p% a% J: a2 `: ?
{
# l1 K& n; i3 h0 J% Y% ?4 o7 uchar buf[80*25*2];
: G! \0 d& u3 \$ g% a. V- Bsave_mono_screen(buf); 0 J& L% C% J; [1 G3 r/ B7 R4 {
}
9 z: t" e9 i6 N8 ~1 a, T) w</FONT>
# ]/ i! ^* Q+ I# |% |$ P& l9 M% _' Y</P>/ f$ a& d# `2 {5 g$ `% j' D1 ~( H
<P><FONT color=#ff0000>函数名: moverel </FONT>8 l6 ?8 O- H6 t& t$ {1 r
功 能: 将当前位置(CP)移动一相对距离
% S, y0 x* O% M( |用 法: void far moverel(int dx, int dy);
& e# @, t( C; b  ]- Z7 E% e程序例: </P>
) W( c9 ~2 V& H( [/ Q<P><FONT color=#0000ff>#include <GRAPHICS.H>; ?4 f0 _$ M) Q( J8 C6 k
#include <STDLIB.H>
2 ?7 _8 s0 P4 o#include <STDIO.H>
( \+ x0 V. x# `( j2 [" |6 g2 [# m#include <CONIO.H></FONT></P>
7 Y# `9 A  ^, o8 @8 Z9 C" O4 z<P><FONT color=#0000ff>int main(void) $ \. P# Y" {8 I3 v3 K
{
0 i" P  b( F+ d/* request auto detection */
- d/ J8 w" g% Y4 Mint gdriver = DETECT, gmode, errorcode; 4 U; \2 _" F- @- W6 B' I" B& i
char msg[80]; </FONT></P># n9 E, S/ H: n, y& f* h
<P><FONT color=#0000ff>/* initialize graphics and local variables */
: u0 G3 G0 u! i% z' r6 a* binitgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P># O9 c) p0 K8 o2 P8 l
<P><FONT color=#0000ff>/* read result of initialization */ 8 b2 @3 f# \" F/ ]( P2 X! P
errorcode = graphresult();
: `, V% r4 v! o7 Q; z! `if (errorcode != grOk) /* an error occurred */
( \- j2 F2 n& o- n1 G* s0 ~7 M; |{ + n& D7 I1 k' Z6 r  D) R: k( d
printf("Graphics error: %s\n", grapherrormsg(errorcode)); 2 _% K( J- K& B1 ]% b
printf("Press any key to halt:"); " G5 {6 U! f  J5 t* F2 s
getch();
+ V0 ?5 V2 A" B0 Wexit(1); /* terminate with an error code */ / ^$ D7 y7 e; T2 s; ~4 a9 l( w
} </FONT></P>/ F4 {5 W2 h' S8 n/ y
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */ + Q' q  A* @' Y- o
moveto(20, 30); </FONT></P>
  \1 W. x2 L( z6 E3 `& Z# {5 ^<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ ' K1 X- }, O' f! i+ o
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>9 F) Q) I5 V0 b& k( J
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
  Q. O, B2 I( i4 W) ]sprintf(msg, " (%d, %d)", getx(), gety()); ( X3 o! \6 k3 Z8 w5 a) \# F1 W8 _
outtextxy(20, 30, msg); </FONT></P>
, p* G' A* ~' U1 Z. @# n<P><FONT color=#0000ff>/* move to a point a relative distance */
' [9 j" A6 w4 u: x$ ~1 K/ m/* away from the current value of C.P. */ 3 k+ E  q& @/ I0 {& ?2 S+ Y
moverel(100, 100); </FONT></P>
. U, ~! ~' \7 F+ i& j<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ 0 t, m) l6 _( \! `; h  Z
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>. f1 t; R7 U$ e. R6 c/ d
<P><FONT color=#0000ff>/* create and output a message at C.P. */
& [, q+ ^1 Y' {, `! D* i/ g# S3 Nsprintf(msg, " (%d, %d)", getx(), gety());
% V% a5 O# S  m6 E7 L, Q/ gouttext(msg); </FONT></P>
  ?# p& Z; N( B' J<P><FONT color=#0000ff>/* clean up */
( c4 t4 e# s0 p5 k  ]) ~getch();
5 Y  G  H( [3 {6 v( Yclosegraph();
0 b  W* r1 h; r* freturn 0;   E; W$ I2 B; r# q) X% [/ T, ~1 {$ y
}
8 ]  }% l( N$ s9 B+ l( u' e</FONT>
0 Z1 q5 @( E2 D, j0 y& U</P>' }% @. |* x2 x% I* r9 x
<P><FONT color=#ff0000>函数名: movetext</FONT> " m  Z5 l/ e3 f. o6 j" O# _9 f7 N* E
功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域
. d( k0 w5 h7 r0 g用 法: int movetext(int left, int top, int right, int bottom,
. P. N- ~8 B! d# Dint newleft, int newtop); . o; P" I  G/ O4 E/ a
程序例:
# a$ D. D7 v# C( |1 D6 h& {* @<FONT color=#0000ff>#include <CONIO.H>& |$ q; u' O' |6 C) W
#include <STRING.H></FONT></P>
& h  f/ h( \, S4 ?5 F<P><FONT color=#0000ff>int main(void) 1 t8 ^5 G: _/ {' p9 D) [9 A- R
{ % T9 Z7 i# q1 G' \7 C, i. y6 T7 a
char *str = "This is a test string"; </FONT></P>
& c8 a. Y! _9 A1 W6 d<P><FONT color=#0000ff>clrscr(); & b+ X( o" B4 v
cputs(str); ' t, [2 l) Y" |  _' M
getch(); </FONT></P>
7 r/ i" F; ]5 A' m<P><FONT color=#0000ff>movetext(1, 1, strlen(str), 2, 10, 10);
7 L6 `; G: Q5 ~7 \getch(); </FONT></P>
0 Y3 D3 j. G: V6 U5 v<P><FONT color=#0000ff>return 0;
& l  w; p$ `7 f( M! Y% |0 h' y, y} ( W" z5 F8 `+ L% y2 F) g7 t

- p7 m2 z: ?" `</FONT></P>
2 i. e* E1 I0 @% b, k<P><FONT color=#ff0000>函数名: moveto</FONT>
. ]4 M# v5 e4 K1 i; u  z功 能: 将CP移到(x, y) ! H1 I7 B* k& D8 y3 E' v
用 法: void far moveto(int x, int y);
, o- E; F: v# Z: j" Z( @程序例: </P>
, a  T. @! o0 t- T<P><FONT color=#0000ff>#include <GRAPHICS.H>
. u1 ~( E7 B+ M2 y# J& b0 _#include <STDLIB.H>
/ D4 _, i8 C: U  ]. d/ e#include <STDIO.H>2 i: K: |( o4 J/ k
#include <CONIO.H></FONT></P>7 z3 G( Q4 f9 a" ~8 v
<P><FONT color=#0000ff>int main(void) % e. H+ i/ {$ x) _3 q- s" N$ v% K- z
{
9 l( E2 `5 D& F  b* A' \/* request auto detection */ . L7 h4 T2 }7 X8 p3 m! U5 ]
int gdriver = DETECT, gmode, errorcode;
7 o* |; {; R, b8 p6 n0 Dchar msg[80]; </FONT></P>6 I+ J8 M; r& L7 F# T
<P><FONT color=#0000ff>/* initialize graphics and local variables */ - Y; D/ d" a0 H
initgraph(&amp;gdriver, &amp;gmode, ""); </FONT></P>" C' L! }5 a, D$ y
<P><FONT color=#0000ff>/* read result of initialization */
; s4 l7 `8 r4 t- Z* Verrorcode = graphresult(); ; p2 G) n5 u1 _
if (errorcode != grOk) /* an error occurred */ 9 R3 }: d, }) y+ O  S% `8 q8 f
{
8 v9 ], X% X0 ^printf("Graphics error: %s\n", grapherrormsg(errorcode)); 6 Z, u* B+ n. p
printf("Press any key to halt:"); ! g, f  o, `7 y1 h3 k
getch();
* @6 p) N# L; o1 w# g5 H4 J, l/ d! O6 yexit(1); /* terminate with an error code */ ; d  M6 Z$ `4 a2 W# W3 }- D, n
} </FONT></P>/ t, Z# |7 w: Y" e# V. ?2 ]& Y
<P><FONT color=#0000ff>/* move the C.P. to location (20, 30) */   [6 ~, a8 C, |& g/ |- i0 C
moveto(20, 30); </FONT></P>, E6 H$ E2 C0 ?9 D( {1 k
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */ 8 u7 D/ `  L2 P; n! x* f( M
putpixel(getx(), gety(), getmaxcolor()); </FONT></P>5 V2 n  ]1 \! e- f6 f. z" u
<P><FONT color=#0000ff>/* create and output a message at (20, 30) */
3 i+ h9 m1 ^2 o2 O; Jsprintf(msg, " (%d, %d)", getx(), gety());
- Y/ R( F5 A/ h3 ]# u) T0 {outtextxy(20, 30, msg); </FONT></P>
0 U3 R) b* t/ x# i<P><FONT color=#0000ff>/* move to (100, 100) */
/ d3 k- Z7 D* nmoveto(100, 100); </FONT></P>) o8 B0 `& h. l& I: Q
<P><FONT color=#0000ff>/* plot a pixel at the C.P. */
) z( m1 _' ?, `! {# V9 Iputpixel(getx(), gety(), getmaxcolor()); </FONT></P>
3 b! L; v$ a1 P3 v/ V4 ~<P><FONT color=#0000ff>/* create and output a message at C.P. */ ; W( i6 ]$ D4 }. l) x4 q
sprintf(msg, " (%d, %d)", getx(), gety());
, M8 `# O. R# J$ F7 m2 Qouttext(msg); </FONT></P>
+ Y9 N: p) s' {+ ?- u<P><FONT color=#0000ff>/* clean up */ / b. ]2 V( B1 [; s% v- J- ]6 q
getch(); / c; [7 M: u; `& {
closegraph();
  m5 w) C# Y6 M( z, ]! h& Y, q7 i/ Creturn 0;
5 w/ \- i" l$ N2 \/ j  y0 V} ! [4 L4 |+ S( H! W
</FONT>: ]& [% \6 O0 p
</P>1 a" U8 Q. n5 A/ _+ {
<P><FONT color=#ff0000>函数名: movemem </FONT>* w$ ~7 }0 D( C+ N4 k* _- R
功 能: 移动一块字节 5 T3 R- u- o$ k" h' ?, L
用 法: void movemem(void *source, void *destin, unsigned len);
' c4 l1 I% m3 Y# n) p& O+ E程序例: </P>
: O6 T6 p- c7 A1 p( E3 d<P><FONT color=#0000ff>#include <MEM.H>. s" m/ s  a/ Q* A
#include <ALLOC.H>6 w4 U- [. x- K) I! o8 x) j# v' v
#include <STDIO.H>
/ r2 d% K. ~1 O5 ]/ l' u#include <STRING.H></FONT></P>3 T1 e8 D* Y5 R- u/ }: C- N/ j
<P><FONT color=#0000ff>int main(void)
# K$ O' z. K# B+ E# }& i{
: ?+ i8 Z$ P# X7 Y  `" wchar *source = "Borland International";
6 o! M% t1 S& W! ?3 t; a, Nchar *destination; ' E3 K4 v; k8 i5 O  S3 z# m# R
int length; </FONT></P>
$ q$ Q* u. D. I2 V: w<P><FONT color=#0000ff>length = strlen(source); , k# Q  o5 O; x) @5 X+ S
destination = malloc(length + 1); + |" ?& \. \4 G% |) i3 _" U4 c2 P
movmem(source,destination,length);
3 }3 L8 i& h( S, k5 s8 @/ `: iprintf("%s\n",destination); </FONT></P>
' \; t5 n, S, u0 j! O( }<P><FONT color=#0000ff>return 0; * n1 R. N. B/ p7 `+ H3 [, c
} % o8 _9 a% ~" b" j) R
( r. Z' i% S' H4 m/ X# k* |
</FONT></P>! x% i6 B$ ]& {
<P><FONT color=#ff0000>函数名: normvideo </FONT>: F# c" i3 N' n! Q5 v! b
功 能: 选择正常亮度字符
  n7 d8 k% [# U5 Y: e用 法: void normvideo(void);
; j. X# k! y: @+ f程序例: </P>
$ r8 K' m( h- C/ o4 D2 _<P><FONT color=#0000ff>#include <CONIO.H></FONT></P>2 r, u) c. `( \
<P><FONT color=#0000ff>int main(void) & n2 b* n. `2 K- g7 q2 Q  l
{ " G# c. q! i9 |" G" V8 r5 |# [3 S1 [# D
normvideo(); , Z$ f8 \& n! O
cprintf("NORMAL Intensity Text\r\n"); $ @& H2 h% u/ C# Q
return 0;
2 f  {0 M1 |5 w% _' C' C4 [- r}
7 q  d% \4 ?9 i. t# w8 C% @+ Y- {; _0 i
</FONT></P>4 W( ~# ?" F# m6 h5 |
<P><FONT color=#ff0000>函数名: nosound</FONT> ! u. u( m9 X1 u4 C7 R
功 能: 关闭PC扬声器
. @5 z! Q' w! k* D. m9 a用 法: void nosound(void); . u7 m8 ^1 y6 ~  P7 H* \  H; N
程序例: </P>7 J( _6 }) ^8 `7 k1 w
<P><FONT color=#0000ff>/* Emits a 7-Hz tone for 10 seconds. </FONT></P>
4 B  H/ H; V4 _) f: U  k<P><FONT color=#0000ff>True story: 7 Hz is the resonant frequency of a chicken's skull cavity. / E5 Y" Q: L5 v0 w) Y
This was determined empirically in Australia, where a new factory ; X, Z1 e# A' ~9 U
generating 7-Hz tones was located too close to a chicken ranch:
; T9 O: i6 E" v( Z& k! |  BWhen the factory started up, all the chickens died. </FONT></P>! W, w- f2 c- w, B" {4 {) ~* a
<P><FONT color=#0000ff>Your PC may not be able to emit a 7-Hz tone. $ |- c% L) ~8 U& F9 Y
*/ </FONT></P># e9 |. ?, X7 ^/ e
<P><FONT color=#0000ff>int main(void)
, d' x2 ]3 H1 E" Y* x9 r9 ^{ * y( i& F* X; D! h
sound(7); 6 f5 j2 F! N1 P8 b3 F0 f7 ^
delay(10000);
* @! M$ z9 J4 J7 B, J5 Qnosound();
& {1 }+ b/ n! w8 L& `0 E. D, J}
' w# }' m: _* g% K</FONT></P>




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