# include<string.h>
4 H6 z7 ]' P$ f! W4 \8 E# include<stdio.h>
& L5 j: D u/ E6 h9 vcheck(p1,p2,compare)
$ V+ N) i1 W$ t8 z' N2 y+ bchar *p1,*p2;# I; \/ a& q9 M: D8 ~4 K
int (*compare)();) x5 \0 p9 K' r3 W, Y5 B4 b
{! o! t1 c( g8 o5 {0 o; i
if(!(*compare)(p1,p2))
. }+ E2 p0 O, `' q! v& r9 v+ ? printf("\n The two strings are equal!");( U* v7 Z/ C- ^& S
else
8 j! _! S c* h5 a; F printf("\n The two strings are not equal!");
, M% ~& U: y5 v* ^: l}. H: r! w# g1 Y$ j
numcmp(a,b)+ h4 v/ g, _/ ?& G1 [2 K/ j4 ]
char *a,*b;8 ]) |/ x& r! L; N6 R
{
5 i# b6 o% h, G# D if(atoi(a)==atoi(b))+ @' l' S7 l5 a6 K, G, c4 o
return(0);
; r# u9 y! p9 n5 L9 p& X* [/ S% ~ else
$ N' t/ ]) I+ S$ b! m return(1);
) G7 ~- n) `5 t) {1 p9 Q}2 N5 j0 E3 |' [0 Q8 |
main()
; F( V, s9 X8 E& ]! ?{) L1 ?' `$ @; W
int strcmp(),numcmp();; s& s4 ?* R0 w3 U0 q
char str1[100],str2[100];
( s) P4 s K* H$ L& ` printf("\n Please enter two strings or numbers:");
% `) V0 k6 `! u scanf("%s",str1);" }! Y" I) T; h* [
scanf("%s",str2);
0 o: G% C9 Z3 y printf("\n Please enter 'n' for number compare or enter 'c' for strings compare:");2 X) V, h0 s+ ^( g6 H3 c
if(getchar()=='n') c% R+ j5 l4 `6 y& E
check(str1,str2,numcmp);+ D3 Q. _% o: A$ ^3 z- u; G
else
5 ^5 K8 E* `1 d; d& B- H" w check(str1,str2,strcmp);
9 h/ ^3 |+ |1 m A5 K. n: H}0 ?% m8 n3 I7 w/ p
: Q4 v0 Y3 O( c0 u$ S7 B* I9 i
这个程序的题目:检查两个输入数或字符串是否相等。
7 T: ]/ H" x1 K7 q 其中
6 H% P* X4 `4 Y' N2 Knumcmp(a,b)
) _; T' q" j+ d( t9 D1 Bchar *a,*b;
$ a3 E3 s7 u( j) p% o1 y0 \{+ b0 t6 n+ ]' V) U: h
if(atoi(a)==atoi(b))4 W3 c" _8 _' y- H- G9 X8 _) `: M
return(0);
1 ]) A5 J6 ]4 J O# j5 K p else8 @" ?+ l6 f2 U/ }' u
return(1);. `/ z. Y6 X" X, ~# S
}' y3 T& Z, t: }8 H3 o. l7 N
这是一段数比较函数,那么a,b都应该是数,比方说一个2,一个3,为什么这两个又是指针?那么atoi(a)的意思,
. ?2 R+ [. @0 W- y就是把a指针所指的那个数变换,然后进行比较。可是a并没有所指的数呀?- h6 U4 q4 n1 F. ^# I. G4 Y
况且这是数的比较,为什么要用atoi函数(字符转数字)?
5 B1 p' b* F% Y! s* C4 M还有,整个程序运行不能正确运行,估计是
% K0 l9 p O& z) D5 zmain()
4 r- S+ c# Z! x% ~+ I4 m% B{
- k& M) v9 n8 N ` int strcmp(),numcmp();0 I, E- L" j' X+ ~4 Y. |& Y5 |9 M% l7 C
char str1[100],str2[100];
9 [5 i! l$ C# ^7 B& N7 S printf("\n Please enter two strings or numbers:");
/ P( ?; z: X! K4 }% y. T scanf("%s",str1);
/ S/ p( j+ A- L' F V scanf("%s",str2);8 v2 C* s4 I c# M2 r' J+ L
printf("\n Please enter 'n' for number compare or enter 'c' for strings compare:");
' r5 H+ v% S3 w' M, ~ if(getchar()=='n')/ c2 N7 _5 z9 t! t% t$ @
check(str1,str2,numcmp);
- W% X! U6 h! h$ ~ else
$ F; l4 N5 d9 D3 \ check(str1,str2,strcmp);
& j0 A& \: }) ~" b- l: y}6 U% e3 p2 I& d/ q- ]* t6 i
这一段的毛病,$ N' I" e3 l( C7 C& P2 m
printf("\n Please enter 'n' for number compare or enter 'c' for strings compare:");/ T% o/ A+ S2 p- o2 A
if(getchar()=='n')
: _' ]5 z% _; J3 d, o根本就没有机会输入n or c?
2 s" @9 t4 J d, j请各位大哥挑一下这个程序的毛病?