|
/*甲输入一个四位数(必须所有的数字都不一样。系统判断)
% d- Z" S" \2 ?然后乙来猜,猜错,系统给出提示(多少个位上数字对,还有只对数字位置错误的个数)。以便下一次再猜*/
5 M! T" ^: Y: A8 v4 B# w#include \"string.h\"
6 s. }3 |4 R3 {/ U. m#include \"stdlib.h\"
/ z6 o8 I) Y0 b* S6 Z0 w2 vint Juidge(int n) /*输入判断1,right;0,error!*/
& u8 |) R) i* \" g{ - G6 N: [! w6 S7 S* p u
int i,j,k;
# s+ o: g: {9 _/ S% R; Q2 I8 H int string[4];/ G7 o+ i' R4 B9 V8 X3 y
if(n>=1000&&n<=9999): p/ A8 m/ K; I! O
{
" Q- y; g: M% t, i4 g k=n;
- |' m" B( N6 t% ] c( ~ string[0]=k/1000;
. _1 P$ S. D' ^6 P- M/ {# N k=k%1000;
/ k; V, Y+ ?1 L# f; J( ], l string[1]=k/100;, z- q, _0 W- N( ?9 \- {# Z) V1 W
k=k%100;
9 ~- K& {: w3 y9 S string[2]=k/10;5 n* U5 P( n S6 S: M4 c
k=k%10;1 O& l- g0 z: p e, V5 T
string[3]=k;
; u9 `/ t& x1 [. z1 Y' o& I5 I for(i=0;i<4;i++), u: J' A8 L! y F7 L
{ for(j=i+1;j<4;j++)
. i- d* f" f# ?3 V6 l if(string<i>==string[j])7 s& z% Y' O6 ^2 `/ H" p
return 0;) }" E; A+ K4 ~$ a
}
* A1 f4 g4 `: T return 1;
; b) A& O* X- e% i. Q9 ]( q }/* if*/
) J0 ?7 r* `7 K2 M* H else
+ a ]* W% A7 E5 b return 0;' z# e& k' T& c W. V
}/*juidge */
* ^4 b- x/ M, m- f# j' w/*转化并储存为字符串*/
* q) n' p' }1 c9 Q7 w, _void Change(char * s,int k)7 j/ d: @% x8 A1 N2 }! M" d6 _
{ int n=k;+ B: ? j, o3 V1 ^& {! z5 P
*(s++)=48+n/1000;
* N) a& ?5 R& r2 X n=n%1000;% A& \; b$ z: D! D" G) K$ V8 {
*(s++)=48+n/100;. G' Q( s- b# C
n=n%100;
0 q$ J% B5 P. \. E# y, i *(s++)=48+n/10;$ W- A; T5 z Q, l7 A: X
n=n%10;4 V1 ], v# p9 L6 d4 V4 w v8 j
*(s++)=48+n;) ^" V# N/ g A5 B5 V- U2 X& u
*s=0; /*结束符*/7 A; b& i' b# ^3 P& m
}/*Change*/
, ]7 y$ P( {' e& A0 [) s) Kvoid guessend(char *p,char *t) /*不等时比较*/; q' u+ m; u- @3 B4 d9 I
{ / t$ C# l* U# I
int m,n,i,j;
7 i9 L1 J( R0 [' f2 M8 v char *pt;
: z4 ~5 o/ \( t m=0;
7 _$ F4 J# P( P n=0;: \6 J- N5 C$ A9 |4 L% g/ d4 n
i=0;: A$ y# X- Y- F
j=0; /*每次赋初值*/
, O- A7 X6 n- T+ J pt=t; /*保存头指针*/
5 G$ @; ]' V }/ M9 i: q while(p) /*p为基准,i为串s中当前字符位置,j为串t中当前字符位置*/
* U/ `, y3 d, p3 _/ u {5 p* m) V$ m! @% L F) b$ ^
j=0;
) f4 p+ ~3 n$ x* ^- d( X9 c: e! W while((*pt)&&((*p)!=(*pt))) /*不相等后移*/
% ~ p- ^* j6 ?& [; I" f+ d: y& Q {j++;pt++;}
+ t, {* u9 N6 k% u# H. q( K8 h if(!(*pt)) /*t字符串 结束,则s后移,pt则返回*/" F! k( |: ]. v# q) [$ {) h
{i++;p++;pt=t;continue;}
' R/ }- e- s; F% K* ]* _. c if((*p)==(*pt)) /*找到相等字符*/
; e/ O* }; V5 b% z$ Q! I$ u0 e' R {if(i==j) /*位置相同*/% Q, T# l; L0 I2 G$ B C1 y
{m=m+1;}4 M0 v( y# |6 ]$ y9 L+ p
else
+ J" `/ n3 g8 @4 y' r {n=n+1;} /*位置不同*// `' h) P4 R$ t4 m" X+ @, M
pt=t; /*pt位置返回头位置*/# m( R+ J1 } B' W
p++; /*后移*/
7 \+ v! J8 `+ v" |: v; J% O5 X i++;. O6 e; \% H2 O' [& Z' I( R+ P6 V
}/*if*/! ^: o1 M, ?6 U$ }, w
}/*while*/: z3 u$ h [! a( o: e% J9 x# A5 J
printf(\"\\n%s\",p);
. p, e) Q2 s" ~7 o printf(\"\\nyour integate is %s,%s\",p,t);
, Q' V% j8 f. \ O printf(\" %d A\",m);
* r8 j! [# T+ ]; G printf(\" %d B\",n);
& V. C9 T) B+ h1 u' w t7 z2 W return;$ X% F, b u4 X4 q: Q5 T
}2 P7 {+ B, B8 U' ^& I2 G8 m
main()
( d, c- Z7 S* t{
f: m- c3 I( B int m,n,k; /*k用来控制循环次数*/
8 V0 i8 Y& n) [ char *p; /*存储输入字符串*/7 t1 K: ?0 L( B% ?
char *t; /*存储所猜的字符串*/( Q1 p8 J5 v2 a- A8 u
/*输入A的数*/# X7 T, P& f/ C; g8 [
printf(\"\\nplease input a fourIntergers(1234---9876):\");, G, E' v2 K% `! k, t
scanf(\"%d\",&m);+ d8 u5 d: o3 N/ U! n( E
while(Juidge(m)==0)
- }7 ~0 d Q9 d) |+ G3 E {; Q' c4 A0 `; z$ P
printf(\"\\ninput error!\");
. @0 r8 L* e2 \ u9 { printf(\"\\nplease input a fourIntergers(1234---9876):\");3 M1 e9 Y: L' \1 j) f
scanf(\"%d\",&m);7 N/ F: a9 w4 f$ \
}' P4 l: p/ ^, U: S
Change(p,m); /*正确则转化到s字符串中*/
" l1 e4 [% `. d- G2 E+ B /*开始猜*/
6 x6 F8 O$ M0 s& w2 l for(k=0;k<8;k++)) _0 N: d2 B8 C" s8 r% T& D; r
{ /*输入正确的B猜数字*/; |5 y* u( a* [+ s) p+ Z
printf(\"\\nplease input the Interge you want to guess:\");
& w- c+ N3 b7 E+ @9 A& v. q scanf(\"%d\",&n);
$ C& i1 k' S7 S, C" J+ T9 _ while(Juidge(n)==0)8 v+ n: P$ j' @. t
{) _# T' F' a: X
printf(\"\\nerror input!\\n\");8 R& q; L5 |, I7 o& V
printf(\"\\nplease input the Interge you want to guess:\");
7 {* {2 e1 [6 v. _: t0 d scanf(\"%d\",&n);4 X) o3 Q# P' j: H L% P8 S
} /*while*/
! m9 T, e* i! [, e- v Change(t,n); /*正确则转化到字符串中*/
]' h7 w/ v7 u3 w6 F4 }3 Q if(strcmp(p,t)==0) /*比较成功*/$ E! t. b% j3 Y" b2 w9 P
{
. F7 G. z0 H. V6 P8 l printf(\"\\nSuccess!Congratulations to you!\");$ b3 M8 D- o9 O6 ]5 F
printf(\"\\nthe integate is %d and you have tried %d times\",m,k+1);0 e% h( U* f4 o- _: @# m
exit(0);
7 N! h# U/ A! a1 ]# I. ]: d$ o }
% y: m X2 n( G0 Q+ ^4 d. ?8 m else /*不相等则统计,且输出相应的结果,以便下次再猜*/9 R( ^" D- o* x" G
guessend(p,t);( W1 R- i; Z8 P+ J
} /*for*/
1 [$ W3 H2 P+ N4 N$ N& m' h} |
|