|
/*甲输入一个四位数(必须所有的数字都不一样。系统判断)! L6 z: j9 Q8 s9 K& x% | C- d/ @0 I
然后乙来猜,猜错,系统给出提示(多少个位上数字对,还有只对数字位置错误的个数)。以便下一次再猜*/
/ g' U. r$ P: G#include \"string.h\"
/ \# U" z4 f' i" t! Y#include \"stdlib.h\"
* { c8 o$ _4 t/ x Qint Juidge(int n) /*输入判断1,right;0,error!*/& _% j( I) S- {& ^! v/ V/ R
{
4 A3 J9 r6 }+ S" R% p( }- ? F7 t int i,j,k;0 h% b" u' i& P* w
int string[4];. y. ^ b$ P, }* {! G
if(n>=1000&&n<=9999)
. N& y- C2 \3 W& N0 ?/ v) q5 v { . ~! Y' Z( g" T$ Q$ `" x: M1 b9 J4 a
k=n;
% J& k1 U# K( E/ W# H string[0]=k/1000;
9 O3 e8 g# z9 R: A k=k%1000;( ?1 \# r% v6 V: g; A0 |
string[1]=k/100;) Z) X4 F( y% d; ~
k=k%100;
/ _ r) ]$ E2 g string[2]=k/10;
" L: b) H; w2 X) q5 G k=k%10;
2 l/ n* o2 z& H& O* I string[3]=k;
- w& R2 y6 V7 i; Z; m# b for(i=0;i<4;i++)
5 Q7 V/ S0 |2 q { for(j=i+1;j<4;j++)0 O! }) Q) N t. v$ Y+ h" ]8 \
if(string<i>==string[j])1 Z* r! m- I# v
return 0;
, O8 z) d) g& z& o }8 u9 Q5 y& ?" Q9 a7 }0 h
return 1;9 v' ]2 m& z4 G7 w
}/* if*/8 p- i6 ?% k }) P+ g
else
" y2 C$ Q4 ^. H: c6 ]! ?& C return 0;% d2 p& _3 b2 N5 X% W' \3 b
}/*juidge */
) F/ @$ X# H: \8 D/*转化并储存为字符串*/
9 d' r$ L& F3 U3 Jvoid Change(char * s,int k) d3 }) @' {/ W2 t0 w) |; q6 E
{ int n=k;7 s& \$ d5 W( V6 t+ O
*(s++)=48+n/1000;3 e- h$ F* U4 r
n=n%1000;
- B0 `) D! j& y* x, ? *(s++)=48+n/100;( Y7 I, w* K0 I
n=n%100;
0 K! M. X( j X7 `% i9 b+ `% {! o *(s++)=48+n/10;
6 V6 P0 L" J/ i+ J4 L: I% I n=n%10;0 @7 j7 i+ s( h' u
*(s++)=48+n;
; w8 J% b* d+ i+ Y) Y/ l *s=0; /*结束符*/% @' `; |4 X; u2 A+ s
}/*Change*/
" q3 E5 \5 E2 @void guessend(char *p,char *t) /*不等时比较*/' L+ F! @7 ^, B1 q! i4 B- f" J& g
{
5 }/ ]! y& H0 E8 Q( M- s int m,n,i,j;9 B9 T$ @7 T5 O, W1 a
char *pt;
7 I# \& a- ~$ l; Q' w6 ?/ o0 U m=0;
, |6 k9 D! G' q n=0;
* ^( x5 J& l: o! g/ A2 ?' a. P3 S i=0;
( b) b1 h0 G' {3 ~9 Z j=0; /*每次赋初值*/ 2 l$ g$ ^1 F4 `, L+ e8 D
pt=t; /*保存头指针*/- N: q/ E, t+ {. D" t a3 B1 @2 y
while(p) /*p为基准,i为串s中当前字符位置,j为串t中当前字符位置*/$ U& v" o4 j) x) F# }# \7 O( H
{! E4 i! u/ B# x% ^7 {/ z
j=0;
( U& ]) n5 H9 S. z1 v2 }6 g while((*pt)&&((*p)!=(*pt))) /*不相等后移*/
7 G6 E' F* F* {( \ {j++;pt++;}9 t9 g9 }! ^# f- ^) S; V
if(!(*pt)) /*t字符串 结束,则s后移,pt则返回*/& ]( m; D' Q; t
{i++;p++;pt=t;continue;}
2 y) E' m6 x3 \0 i- l5 Z, f if((*p)==(*pt)) /*找到相等字符*/
: Z; H# E9 ]8 k+ M {if(i==j) /*位置相同*/4 H% H, F! p: `3 k; x+ Y
{m=m+1;}) @$ s4 ]8 z6 R ^9 s6 b8 `
else 9 b0 Y3 n! x8 e
{n=n+1;} /*位置不同*/( Q ?; I9 q. L$ x* ^5 s7 \
pt=t; /*pt位置返回头位置*// D- u( F8 F- D& U' x9 d' B* |
p++; /*后移*/
+ d$ K. }; C9 H" W i++;* M+ I/ I" {- j% c
}/*if*/
/ z" m" p. Q# f }/*while*/
5 T" t+ f \. N0 F+ p1 j printf(\"\\n%s\",p);
_3 a+ {# q5 d+ S' A7 h" N. z& x) _4 V printf(\"\\nyour integate is %s,%s\",p,t);
2 f# u5 y ^9 A' Q. Z printf(\" %d A\",m);
. T" a/ @( `7 A3 F9 J6 n printf(\" %d B\",n);. ^1 K* w- n$ m$ }2 `* x
return;& f* K y; \1 M1 v- W% t
}( ~% ?: u8 Y" b- E
main()' _. N4 R3 R2 |9 K
{
+ ^+ u$ I0 ?, ] int m,n,k; /*k用来控制循环次数*/* R* c- t- y: k7 r
char *p; /*存储输入字符串*/
4 Z [" v# i/ u( ~- j, ? char *t; /*存储所猜的字符串*/
Q# s: U6 }; s! `# a! Q, B /*输入A的数*/
! _% I. X5 z. O: n+ A printf(\"\\nplease input a fourIntergers(1234---9876):\");- Y, \: ]- j6 f( F F
scanf(\"%d\",&m);
# s0 ^5 K1 S8 r while(Juidge(m)==0)
6 _4 O e# _1 h. t" A {% F8 p5 ?7 L0 h# C
printf(\"\\ninput error!\");
; q: y7 G" W) b4 T1 q printf(\"\\nplease input a fourIntergers(1234---9876):\");
7 Q4 ?% N9 \" o: R9 q scanf(\"%d\",&m); `) B) V* s" U1 i! ?, L/ p/ M
}4 @( j) k6 W3 O1 c
Change(p,m); /*正确则转化到s字符串中*/+ e0 V# G- S& z) }: u7 _
/*开始猜*// k/ L3 A6 K9 ]4 e" Q
for(k=0;k<8;k++)( i6 M+ h5 j# r) Y( N" O. q
{ /*输入正确的B猜数字*/
" K# U0 P, D" _8 Z3 ~( G. b printf(\"\\nplease input the Interge you want to guess:\");, X3 L3 ?/ m# T2 |
scanf(\"%d\",&n);: g8 l9 U# z0 h6 @* v$ T4 n
while(Juidge(n)==0)
3 Y1 U; k. C) o+ M8 M& M& {! j {+ G) [5 k* D6 j2 C* A. s" _
printf(\"\\nerror input!\\n\");; }9 W! G0 W) p2 y5 }
printf(\"\\nplease input the Interge you want to guess:\");! y% e* r8 C5 H5 D+ ^
scanf(\"%d\",&n); f) S1 v7 A) V- I2 O/ q
} /*while*/
6 }7 w, J. ^8 [9 D0 l; W% J Change(t,n); /*正确则转化到字符串中*/! Q! A7 c7 M0 f( Q$ F% ?4 a
if(strcmp(p,t)==0) /*比较成功*/% L q. A; c% D
{) C E! k: M0 W+ S! l
printf(\"\\nSuccess!Congratulations to you!\");
; S/ k9 I' g# Z0 y, Z" `6 x8 | printf(\"\\nthe integate is %d and you have tried %d times\",m,k+1);5 m8 i9 D5 x; N7 `1 S1 x) V- a [
exit(0);
) ]# r; g& p! V' i }
2 }( ?( t6 W, v8 P- w# L4 z else /*不相等则统计,且输出相应的结果,以便下次再猜*/
4 ~& Z+ s3 J! K6 R( ~$ O8 Y guessend(p,t);
, ?( k1 F: T. M5 J$ d* M } /*for*/* o6 o' m k ?0 L
} |
|