数学建模社区-数学中国

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

作者: 韩冰    时间: 2004-10-4 03:00
标题: 函数大全(h开头)
<><FONT color=#ff0000>函数名: harderr </FONT>1 W  Q$ }2 _: o* I4 M) h& c) m
功 能: 建立一个硬件错误处理程序
! ]( Q5 |4 ]1 A6 c用 法: void harderr(int (*fptr)()); & H, u! f- _. j
程序例: 2 b3 f+ q$ ]$ [8 B
<FONT color=#0000ff>/*This program will trap disk errors and prompt # `9 W1 s  i' w# ?" m+ _9 t
the user for action. Try running it with no
2 L) X+ u1 P- Ydisk in drive A: to invoke its functions.*/ </FONT></P>
6 }2 L. X) A& z9 G- X' r7 V$ k8 J<><FONT color=#0000ff>#include <STDIO.H>2 X7 ^: O5 z3 I5 V) N6 H% m/ Q8 j
#include <CONIO.H>
3 r% U: ?* Q# E: q  I1 j6 z#include <DOS.H>6 u3 ~3 Z+ ?( V, G' m5 y
#define IGNORE 0
0 g3 r' |* {9 i3 ~+ |# U4 S& I) O* J#define RETRY 1
2 F7 {' p. [# H% }; L#define ABORT 2 " Z7 {! J1 U& V' ?. `, f5 N, g
int buf[500]; 8 G& c, [4 T6 m  Q
/*define the error messages for trapping disk problems*/ ' J, M( x( Y4 N3 d* T
static char *err_msg[] = {
4 ^: k- G; c3 |7 G, d: y" d  u. ~"write protect", , J+ a7 Y- |9 U1 V1 s
"unknown unit", # X5 ]) T$ M5 J9 B/ {! j4 q5 K
"drive not ready",
7 A9 e; `* _/ s) C"unknown command",
7 T# l7 H# t: j. K8 m' `"data error (CRC)", / R- n/ ?9 \5 c! Q4 Z& z+ `# m9 H
"bad request", 3 a3 e# c. W) y- X% G
"seek error", - q" U, e: N0 U4 b; E7 U
"unknown media type", 0 X0 ~- z5 k1 y- Y  O" K* t* s* x
"sector not found",
* _" q8 e; s/ @' P) O/ q: X"printer out of paper", 3 z; ?1 i2 ^; I( n' R0 P  C
"write fault",
; \. N( e7 w) E"read fault",
8 c  W8 D7 {3 e3 k2 w, @"general failure",
6 e1 f4 Q( ~6 d" w3 U"reserved", ; A8 X( \/ l' ], X) E% h' H
"reserved",
- t( I7 K! G& \& |. A( h"invalid disk change"
5 ]6 C  i$ D: d- p}; </FONT></P>
7 Z+ ]  \" i, Q<><FONT color=#0000ff>error_win(char *msg)
# _: C3 x& Y8 e# u! s, C/ h; f{
7 _) q. y4 y7 Gint retval; </FONT></P>
' m! A8 e9 N" D# O' P<><FONT color=#0000ff>cputs(msg); </FONT></P>
: z, B4 B' Y: O' E- }<><FONT color=#0000ff>/*prompt for user to press a key to abort, retry, ignore*/ 3 I/ b7 N% Q1 x8 c+ N8 E7 W9 H
while(1) 7 w/ G( Y+ ?# M/ _+ f0 G+ B, Z
{
8 X  |7 T( d* bretval= getch();
4 P+ a; k, U8 q& j6 k% B, q/ Aif (retval == 'a' || retval == 'A') 9 J8 D# q0 f0 k3 Z. }
{
2 c! U' B* N. @7 d% qretval = ABORT; * C% J+ s9 U4 r) `. r
break;
+ A9 u2 E' d1 u- {7 K+ P) ]}
+ q, a, V8 I. f# `if (retval == 'r' || retval == 'R') # n1 g% h1 F1 \$ }/ @
{
$ J2 J, m! s7 oretval = RETRY; . `  D0 v7 }& r% v( q
break;
4 c/ z0 g1 z6 i. o: {" x5 c}
' w9 ~- @+ ^, q1 kif (retval == 'i' || retval == 'I') / w. D- B( W$ G4 s/ C9 O
{
3 M# w. b* ^, V, Rretval = IGNORE; 3 ~4 M8 q/ h+ {/ h
break;
. [, a6 G: e* }& C: E3 ~}
! y) ~+ z# N4 L7 b. g* Q" J$ ~} </FONT></P>* j3 v- m: [  i1 t5 Z3 v
<><FONT color=#0000ff>return(retval);
( U- t' v. ~; a( _: i} </FONT></P>
' c& F' M; y7 N( H1 n- L<><FONT color=#0000ff>/*pragma warn -par reduces warnings which occur 5 V8 }0 F  R4 ]
due to the non use of the parameters errval,
; W3 i) ~# [! j$ d/ Ebp and si to the handler.*/ 7 b; W3 X/ Y1 p( }! l) U6 _
#pragma warn -par </FONT></P>
# O8 G4 I1 {. U, x. s( ?  S<><FONT color=#0000ff>int handler(int errval,int ax,int bp,int si)
, F3 C+ G, m/ u" X{ ) ]5 d; @. ~! M+ S9 H1 N
static char msg[80];
1 c. O$ _# p$ j+ F$ l5 [unsigned di;
/ ]! U4 {9 {. r& `! ~, M$ T2 B* Qint drive; 2 l+ U% D+ Y" z3 o, I9 K, ^1 W
int errorno; 3 W4 {" q" l" `
di= _DI;
# r7 }5 s5 V3 E3 |, c, N* X/*if this is not a disk error then it was - [( T9 G& i! W# K9 K- d% ^
another device having trouble*/ </FONT></P>. Y' A+ Q* K" k5 l% G& _1 W
<><FONT color=#0000ff>if (ax &lt; 0)
$ K: s5 U9 h3 T& {{ 9 s7 V) I; U. ]9 q5 S
/* report the error */
9 ^3 ~! v( c1 Y* Derror_win("Device error");
) K! z3 S* Q1 ]* R0 J! J8 ?/* and return to the program directly requesting abort */ * U, c4 v, S" [) N7 F
hardretn(ABORT); 1 |& Q2 Y- n7 t% y( ]+ U6 b( K6 a+ y
}
! s8 x, [# x( P0 Q/* otherwise it was a disk error */   E! D+ \* [% |6 s  M- o3 M2 U
drive = ax &amp; 0x00FF; 2 n" O' U( Q) w8 U5 H" g- ^$ v6 Y
errorno = di &amp; 0x00FF;
1 C* H$ e) ~, A5 R4 \/ R/* report which error it was */ " ?9 I1 E% s1 q  e
sprintf(msg, "Error: %s on drive %c\r\nA)bort, R)etry, I)gnore: ", 9 W! w5 a0 r* P* t7 u$ @' c
err_msg[errorno], 'A' + drive); ( g3 e2 ]- g- _8 c
/* ! M3 m* e: D" M( s% J! h
return to the program via dos interrupt 0x23 with abort, retry,
; v7 m2 z& M% z( F/ f& p* g0 ~  oor ignore as input by the user. / V6 M$ z9 ~4 u; e" Y, P* s; x
*/ # I0 c' X. U. V
hardresume(error_win(msg)); - @2 ^# q5 ]! P+ j+ O
return ABORT;
/ p% M& C2 w7 I0 R9 k" t1 p}
" p5 `/ H: D. ?& t% Q( h5 A2 }#pragma warn +par </FONT></P>" z/ S0 Y1 y% S5 Q& T
<><FONT color=#0000ff>int main(void) - P9 h5 R) m4 ?+ f
{ 3 j, g/ L- F! B: e" n" f3 R  H
/*
9 q; M) ?5 o2 _4 [8 k8 Binstall our handler on the hardware problem interrupt ' W/ v* b: ?8 b" h4 o7 c
*/ 8 a+ K) w1 f0 k
harderr(handler);
9 u) @! r/ E# F+ fclrscr();
8 [! q4 {' T7 Cprintf("Make sure there is no disk in drive A:\n");
7 r1 Q- z7 k* l: Y$ Mprintf("ress any key ....\n");   Q6 b1 }8 ~+ W$ N
getch(); $ K5 q" R) U& ]! r0 S4 B( K
printf("Trying to access drive A:\n"); ) w+ f7 H9 J* F- E" v. b
printf("fopen returned %p\n",fopen("A:temp.dat", "w"));
" k! A1 O5 N" u, C8 dreturn 0;
# R: ~9 b  Y$ {" W- m7 Q0 d} . k$ W. x7 `0 P% a, M
</FONT>& ~& l7 s/ z1 b, ?  \+ r
</P>
& W0 T1 U& T; D9 |" ^4 z<><FONT color=#ff0000>函数名: hardresume </FONT># m  x. ~. i8 [; q) L/ H% O
功 能: 硬件错误处理函数
( ^) x1 }/ T8 z% M用 法: void hardresume(int rescode);
) Z. Y/ j( \# S/ t2 G4 H程序例: ; C6 n2 a1 h, A) q- m; `" X/ k
</P>1 y: p+ g5 d9 g2 C
<><FONT color=#0000ff>/* This program will trap disk errors and prompt the user for action. */ ( e5 U# a1 X6 Q; ?; n5 V
/* Try running it with no disk in drive A: to invoke its functions */ </FONT></P>
% @) g; Z+ ]$ y: j) O4 ^, v<><FONT color=#0000ff>#include <STDIO.H>- w' ^1 j6 `9 M3 C# ?7 V
#include <CONIO.H>( }2 l  C$ ^+ a0 }
#include <DOS.H></FONT></P># S4 ?3 m) ?* l3 N
<><FONT color=#0000ff>#define IGNORE 0
9 _( W' j9 Z% X) O( e#define RETRY 1
; J9 ^4 V- e0 L4 y# Y8 a#define ABORT 2 </FONT></P>
" t2 d8 m1 p, R! [, z% B% c. b6 y<><FONT color=#0000ff>int buf[500]; </FONT></P>. E9 ?% x5 P: j8 S
<><FONT color=#0000ff>/* define the error messages for trapping disk problems */   @# y) h" N8 Q3 @% ^
static char *err_msg[] = { $ C2 a+ ]( s5 A
"write protect",
) a0 i6 a. k/ a"unknown unit", 7 X4 H- p- C9 a' f( @7 _0 \
"drive not ready", $ Z& a$ b+ E. R4 [. i
"unknown command",
( R& d& j/ a5 _2 p7 l: K"data error (CRC)", + r; l4 n0 s$ v( p% \
"bad request",
+ v8 f- R/ Z" j& e/ z"seek error",
5 ]* H4 Y, g& h* f) L2 e# S"unknown media type", ; r5 ^8 V0 h8 B, k
"sector not found", % C1 C  v- ?' J
"printer out of paper",
. b- q; V9 Z& h$ \, @" A3 _"write fault", 2 s- m5 ~0 d1 J9 u; X% k
"read fault", & D$ G# F# S* n9 _
"general failure",
1 T2 k; U& I3 r4 V. p& B"reserved", : d* b+ g- E6 U" p, `
"reserved", : Z, @6 i5 D* G# |* T5 f4 a
"invalid disk change" 1 `/ E& o9 i0 L; d; x* _) ^, ?
}; </FONT></P>
# i0 C8 @8 }. \" S8 m<><FONT color=#0000ff>error_win(char *msg)
4 J) o# ~# |: W! I# j" C{
- [# W5 c7 B/ Y2 Dint retval; </FONT></P>
, j7 m" z/ t, K1 R<><FONT color=#0000ff>cputs(msg); </FONT></P>) _# k, Z0 _4 V: J
<><FONT color=#0000ff>/* prompt for user to press a key to abort, retry, ignore */
0 n1 W2 W; l0 ], F% z+ W9 iwhile(1) 3 Y, h- v7 \! `1 U
{ 1 g6 ^: M" @8 a9 J" L
retval= getch();
( J" s  t: U, c) f; k8 Y! xif (retval == 'a' || retval == 'A')
# Z* {! R" s3 x. x: {{
7 f) H; }+ `. R! M$ h2 y! eretval = ABORT;
4 |- \$ J% X7 e# U5 d! bbreak;
4 |0 r1 z8 k3 w$ o% R- b} - y' E6 n4 B; b5 @) A
if (retval == 'r' || retval == 'R')
; j: i. K9 D. W{ & X: j2 z1 D& f4 a# b) T
retval = RETRY; ( v' t0 {+ V" o' K: o" H. d
break; 3 F) o0 M# P$ }5 H3 H/ d1 m
} : F; b' f8 ]( a
if (retval == 'i' || retval == 'I')
' o- _- J0 W) N6 e" F{ 0 p' `4 j4 I3 Y% s6 W
retval = IGNORE; ( p1 O& |9 r. _# [- V# h6 G8 i
break; ( k. e9 S1 s2 y& O/ K: z& g
}
; r8 Y2 v* T: @% {} </FONT></P>
. R* T+ t  A% B  W$ z$ K3 d0 l+ y<><FONT color=#0000ff>return(retval);
$ X% r9 J5 }6 R& i( Y& m} </FONT></P>
4 T- R0 C+ F. Q- ?<><FONT color=#0000ff>/* pragma warn -par reduces warnings which occur due to the non use */
7 ~- p$ N. ?! o+ J2 K' c/* of the parameters errval, bp and si to the handler. */ ! z5 b  n/ \3 h3 ?. S( y* e9 K
#pragma warn -par </FONT></P>6 K- M/ Q/ r# T6 M
<><FONT color=#0000ff>int handler(int errval,int ax,int bp,int si) 1 H" Z% _: u* r- J- j- L
{
; r; ~/ N( E- x# O# C1 Z  `+ Pstatic char msg[80]; ; I9 }2 w$ p  \
unsigned di;
$ Q# U: c5 [% K  S, I6 Qint drive; + O2 G4 y$ G: i" ^7 @
int errorno; </FONT></P>
1 [3 b* M2 {* V' p1 R/ V' D<><FONT color=#0000ff>di= _DI; 9 }( r+ d* W. ?% y9 q
/* if this is not a disk error then it was another device having trouble */ </FONT></P>( v2 w, }, p5 q0 V. Y8 Q
<><FONT color=#0000ff>if (ax &lt; 0) % P: c& N1 S, e9 Y8 T( A$ Z2 ?
{
( f5 G+ V& T5 h9 i+ ^' b8 `/* report the error */ 4 X4 O  M2 [) P7 e( I0 G2 c9 I$ z: B
error_win("Device error");
/ j1 w2 |" W0 t+ N, D% a( C/* and return to the program directly
+ L. X7 D5 Q6 `: Urequesting abort */ * o1 i. d$ F& k( Y' M
hardretn(ABORT);
. L" E+ p' R: k, f- z}
# C0 x$ `; Z3 n! v/* otherwise it was a disk error */
6 R- Q0 o) F* e" Sdrive = ax &amp; 0x00FF; & ~7 ~3 @$ }4 L$ p4 Z9 m( g
errorno = di &amp; 0x00FF;
3 P" T1 d4 W: T) Z/* report which error it was */ 5 ~  g3 O, i7 f* s7 q
sprintf(msg, "Error: %s on drive %c\r\nA)bort, R)etry, I)gnore: ", 9 q% t) ]+ i2 C; g
err_msg[errorno], 'A' + drive); 5 f$ m6 f. q$ r
/* return to the program via dos interrupt 0x23 with abort, retry */ # v7 o' u& t( g+ H
/* or ignore as input by the user. */
% Z8 M# C* G) K/ u8 }# \* Ahardresume(error_win(msg));
+ }; Q9 m1 N, h* L9 Q/ u8 e* yreturn ABORT; 3 Z, K% s+ h6 |7 ]5 ]
}
5 F8 Y2 X$ S! M#pragma warn +par </FONT></P>
& b- z$ |& f. H! t2 y<><FONT color=#0000ff>int main(void)
/ w% k( Y& m; W" D3 _0 @4 N7 t{ , h- }0 I% g( x* |2 t
/* install our handler on the hardware problem interrupt */ : r8 ^& H/ c4 W3 ~0 T
harderr(handler);
3 z7 Q3 p0 B8 Qclrscr(); ! r6 y' u& z. B8 K
printf("Make sure there is no disk in drive A:\n"); . I2 Y# ?; |) n8 A+ B
printf("ress any key ....\n"); ( }; U5 W4 @2 l9 g+ F, i. R' l. v
getch(); ( U! i. |* m! P- R
printf("Trying to access drive A:\n"); ( p7 t( H9 v! h) Z
printf("fopen returned %p\n",fopen("A:temp.dat", "w"));
& r4 s5 D5 m2 Z+ C! C% x2 s2 \return 0;
. L# V$ a2 {$ c- r}
4 n5 _7 ?- Q3 K5 A) |" c</FONT>4 Z/ b% I% w/ F( ~" z; ?, O
</P>
4 u3 _* a) {8 L: F0 P9 _% Z+ I<><FONT color=#ff0000>函数名: highvideo </FONT>
( h6 f4 H) V1 K" H% r# m) a功 能: 选择高亮度文本字符 0 V' B8 |* B! g
用 法: void highvideo(void);
6 \5 y3 ^: W) M( s% }% i程序例: </P>6 Q  E4 y' \6 x% P$ X" g
<><FONT color=#0000ff>#include <CONIO.H></FONT></P>3 I0 X$ r# t4 g
<><FONT color=#0000ff>int main(void)
* _& A2 h" A" v( v9 E4 y8 t$ b7 C, M{ 1 K1 D6 }# `* y" [, ^
clrscr(); </FONT></P>4 q6 q5 c; W, @+ z/ R$ f. P; e; q
<P><FONT color=#0000ff>lowvideo(); 1 Y) m3 Z1 f1 ?( t; w# B
cprintf("Low Intensity text\r\n"); 3 Z3 e9 L# J* {' O( {! J% ^
highvideo(); % {; y2 d! n/ A& b6 s; G& ^+ w
gotoxy(1,2);
5 O7 l0 y2 t$ B" }7 J1 Bcprintf("High Intensity Text\r\n"); </FONT></P>
: s4 K6 K4 k& q( ^; l; F<P><FONT color=#0000ff>return 0;
  t' i% l" f6 S0 B4 H4 Z, x}
2 H8 }; `: h3 E) A</FONT>
, g& ^0 D. m( B6 s& G</P>
3 g% l8 h. H) o# B" K( c. N<P><FONT color=#ff0000>函数名: hypot </FONT>
* _% n, K1 ]9 g2 ]0 N* {! w# }功 能: 计算直角三角形的斜边长
" }1 D& m+ z3 `" m  s用 法: double hypot(double x, double y);
( D/ |) r+ q! {程序例: </P>
4 n. l, X5 b- K1 n# X/ _<P><FONT color=#0000ff>#include <STDIO.H>  ]8 u$ N' S. F$ c$ E: D4 e3 i
#include <MATH.H></FONT></P>
8 S8 s3 e7 L; M<P><FONT color=#0000ff>int main(void) * |) R' Z! z" x9 d9 q. U- ]
{
6 G$ F" q+ V- v+ M, Ldouble result; : ]% {0 Y4 p0 k7 N
double x = 3.0;
* \# m9 v  }7 K, l% U+ ydouble y = 4.0; </FONT></P>
' g5 |% I  P5 Q9 F/ f9 C<P><FONT color=#0000ff>result = hypot(x, y); , \7 O0 P. l9 t/ p  L
printf("The hypotenuse is: %lf\n", result); </FONT></P>4 v5 D/ L  g9 O% q# z; Y
<P><FONT color=#0000ff>return 0; ( K$ t2 h# N+ o& R9 h# }9 d1 p
} </FONT>9 f( G, ^9 c9 Z: y
</P>




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