|
/*甲输入一个四位数(必须所有的数字都不一样。系统判断)
7 H) ~! B/ m" ^然后乙来猜,猜错,系统给出提示(多少个位上数字对,还有只对数字位置错误的个数)。以便下一次再猜*/' c7 X* B# g- q+ Q3 W
#include \"string.h\"6 h4 q' V8 F- R) X, U7 z( O
#include \"stdlib.h\"; w5 _% G3 C* p7 f* U6 ~
int Juidge(int n) /*输入判断1,right;0,error!*/ u/ H; l6 {- B) [$ ?& Q
{ 1 a) c" x/ s1 ? u5 B
int i,j,k;
% a( U! L9 C' v3 T$ ^' n& _; s int string[4];
- z2 a/ F% v4 X; ?: G! Y if(n>=1000&&n<=9999)
% d+ ]( k8 c+ O$ R9 s+ [" S; | {
, E8 T u" E) N% n8 o! z; }( d k=n;
' p3 b, u4 ?( Z: z' M5 ^# ]1 L string[0]=k/1000;
. C$ e5 y9 X6 ?% E$ D' K3 D& l1 u5 T k=k%1000;8 C5 N6 p1 r6 h2 j
string[1]=k/100;, J* C6 y( i+ g9 y$ T1 w
k=k%100;" X2 |1 l8 b; ` H5 I3 X ~
string[2]=k/10;; X2 |5 u# N( n: N) @3 _2 w1 [& y
k=k%10;# Y8 X; s+ W: A m
string[3]=k;+ s, z5 h t" e _
for(i=0;i<4;i++)5 V# Q9 k4 E$ s$ _
{ for(j=i+1;j<4;j++)/ T3 z$ Y# }0 Z# g+ {
if(string<i>==string[j])
0 V6 p5 ~! l7 e+ v8 S; C0 o. p3 L return 0;# e/ `' e; P! l6 d& m
}
/ O1 u s; u/ Y) C c return 1;
; C# n' j7 N" t4 V }/* if*/
6 R# ~( l6 {* B else 2 @# C+ u" }5 l
return 0;
; v9 w5 a+ ^+ y) @, E8 X: k}/*juidge */
. x# ]1 B# _# \3 R6 g& K( |/*转化并储存为字符串*/9 G6 k1 i8 P2 Z) I2 u4 B# H K
void Change(char * s,int k)+ k6 ~: d0 C% Y1 L0 S [
{ int n=k;" i" k p$ D8 p7 @1 F. A
*(s++)=48+n/1000;- W, i4 A* |0 E6 A4 B
n=n%1000;+ s6 g4 F/ w* Y6 Q
*(s++)=48+n/100;4 Q" X2 s7 x) m0 {( j1 ]& u/ ~
n=n%100;/ n/ ~% q1 g, `$ Q, E* \
*(s++)=48+n/10;
9 G$ T; Q& w- c O0 H n=n%10;( E+ B6 x5 `9 t1 i# V1 b
*(s++)=48+n;
1 w+ }- v) }1 j+ k7 E9 Y% z. M *s=0; /*结束符*/
7 T; o1 J% N$ \, W0 N! I- W}/*Change*/
7 e/ t0 i/ t( e& \3 Rvoid guessend(char *p,char *t) /*不等时比较*/
& }/ Q' V$ X. b9 a( q ~9 {{ ! g- T% m9 e0 ~3 t# l, P$ s2 J0 {: F9 e
int m,n,i,j;
) l: S% X& G5 O0 x' D1 T& I. o% P9 W char *pt;
3 p; \: y. e; g m=0;
' G( G/ ` c# c5 a( @' k n=0;
4 }8 `+ _: h; a. _* w i=0;
" n) c% y: Z( C* t j=0; /*每次赋初值*/ 9 j; ^/ E1 w& U+ p
pt=t; /*保存头指针*/& `; Z* B0 B* k& H3 G j
while(p) /*p为基准,i为串s中当前字符位置,j为串t中当前字符位置*// W5 R$ E, Z, B. K$ d
{7 ]# J* C. m: ?. \
j=0;* T& \( q6 A' T+ i' G
while((*pt)&&((*p)!=(*pt))) /*不相等后移*/+ z" _5 J0 X# e. A5 p
{j++;pt++;}; y) U# |4 t8 z& I) w+ I8 R
if(!(*pt)) /*t字符串 结束,则s后移,pt则返回*/" w0 S ?6 Q' ~) U
{i++;p++;pt=t;continue;}; k8 a4 H" a; b
if((*p)==(*pt)) /*找到相等字符*/# F* z+ a) y3 N
{if(i==j) /*位置相同*/
+ n* n2 |7 O) h9 j. _, E7 A2 X {m=m+1;}
$ U! v# M. d k" i' e8 ~( w else ) p$ i, R1 a4 e2 O
{n=n+1;} /*位置不同*/
% B6 v( J% |) \; m; J ] pt=t; /*pt位置返回头位置*/8 q. {9 l" L V
p++; /*后移*/
/ g- }- F7 q& ? i++;
7 a, c" ~" Q6 q% q! W! g# J/ g* h }/*if*/$ m! Z6 [8 H" j$ c4 k
}/*while*/
9 n3 j# `/ G+ ?$ { printf(\"\\n%s\",p);
. t8 X+ u; M, O$ f% x9 f printf(\"\\nyour integate is %s,%s\",p,t);$ f! j; [1 }( e; ^; b
printf(\" %d A\",m);
0 U6 i2 C2 a$ Y/ ` printf(\" %d B\",n);' }# y& W" Q3 T( f0 B6 a
return;/ _8 |1 \4 C' M& F6 L
}
9 J% B! E, O" v& ~main()
, _* V) B- z7 h2 h{" o1 {9 i) c0 j% V& g
int m,n,k; /*k用来控制循环次数*/
6 d' ]' k' h: w* T- ?- x char *p; /*存储输入字符串*/$ J5 T0 W6 B$ i# U
char *t; /*存储所猜的字符串*/% D, y( I7 I6 b0 ~' }! }
/*输入A的数*/
- l w% i. H; ~, k$ G: O! @ printf(\"\\nplease input a fourIntergers(1234---9876):\");
9 ], ^' ~6 j' R& Q1 C: [ scanf(\"%d\",&m);
h. d* {; E, b: k( ^5 U5 L8 B while(Juidge(m)==0)
$ R7 u0 n, g# @+ i! s* e) @8 O \ {. k0 [1 q' S/ Q: R% x% O' N
printf(\"\\ninput error!\"); }7 O* \! G) `
printf(\"\\nplease input a fourIntergers(1234---9876):\");! \1 T% D" z3 a, H$ }: Z
scanf(\"%d\",&m);
2 |. d& d0 Z* v; x) [. X }
9 w* z7 t% h1 l2 }; |; f: \' j5 w, ] Change(p,m); /*正确则转化到s字符串中*/, ]9 ` N( R: e0 D& r* z
/*开始猜*/; a# ]" V6 B- V& U6 j9 ~+ _4 X
for(k=0;k<8;k++)
4 `8 G) P8 `- U' M1 Y { /*输入正确的B猜数字*/# h- ?' N: J1 j
printf(\"\\nplease input the Interge you want to guess:\");: u/ V( g. s/ {; k0 O
scanf(\"%d\",&n);6 D/ i' b+ r# i) N: l7 Y2 \% s. Y6 V
while(Juidge(n)==0); q; b4 B# `" V- V
{
7 | Z, B: b* G2 b/ Z1 X printf(\"\\nerror input!\\n\");( o1 r$ [1 Q. ^& b
printf(\"\\nplease input the Interge you want to guess:\");
! Q Z8 b( f" E- ~ scanf(\"%d\",&n);
- M& p* `" r/ N' }% J. s } /*while*/
& n. n5 w5 f# R/ d; ^& x Change(t,n); /*正确则转化到字符串中*/
/ }5 ]: {8 U5 T3 o/ J* m2 T if(strcmp(p,t)==0) /*比较成功*/0 L, D; u& R' r
{
7 h& S- u0 P+ a; f* o8 D. M% H printf(\"\\nSuccess!Congratulations to you!\");7 Q+ P6 r, j8 d& W
printf(\"\\nthe integate is %d and you have tried %d times\",m,k+1);
7 F: E6 p/ }0 u8 Z! H9 f6 x exit(0);3 e" Y+ T& Y0 d4 X' O, T- C% c
}8 Q% n1 ^$ X$ e1 T" H& u% Q
else /*不相等则统计,且输出相应的结果,以便下次再猜*/( {, ~$ T+ Z- S) L5 V0 P
guessend(p,t);7 y" x5 `, B0 Z
} /*for*/
' g# n# |! z1 ^" }) d1 Z} |
|