找回密码
 立即加入
搜索

查看: 1556|回复: 5

谁帮我呀? c程序 小游戏

[复制链接]
cocochen19 发表于 2004-11-25 01:17:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转闽南师范大学。

您需要 登录 才可以下载或查看,没有账号?立即加入

×
谁来帮我呀,小程序老是出问题呀
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
blackman 发表于 2004-11-25 20:36:21 | 显示全部楼层
<>#include &lt;iostream&gt;
% {9 \( [% ?! dusing namespace std;</P><>//这是一个判断输入数值是否为4位整数函数</P><>int InputData(int n);</P><>//甲和乙输入数据不一样时的判断函数</P><>void GuessEnd(int a,int b);</P><>int main()+ Y! s0 K' P1 O- O5 H" Q" t) N  {/ e, D
{6 R% w4 u' ?; f/ i
int sNum;: r! K! z) }9 r6 g+ Q
int gNum;</P><> cout&lt;&lt;\"请输入一个正确的待猜四位整数:\";
& a4 K0 T! |3 { cin&gt;&gt;sNum;</P><> while(InputData(sNum)==0)" t/ c9 j0 B- @. O( H/ J5 K
{+ y: r* @: O  g) s, ~, }
                cout&lt;&lt;\"&lt;!error&gt;                输入错误的整数\"&lt;&lt;endl;
* K+ j0 x7 P* v, U5 G8 M                cout&lt;&lt;\"请输入一个正确的待猜四位整数:\";" p* \& V/ n  k; m4 b$ p! N
                cin&gt;&gt;sNum;
& a- P  _2 w$ R5 j5 M) \ }</P><>                                system(\"cls\"); //这是一个清屏系统调用,用来清屏掉甲输入的数据以免被乙看见</P><> for(int k=1;k&lt;=8;k++). E& ]! L# r7 d  }* R, t- v( |7 `
{% ~' _7 W/ w( T- T  P
                cout&lt;&lt;\"请输入一个你猜到的四位整数:\";
+ }1 p$ ~5 U8 ^+ A& f1 N4 g  o+ j                                 cin&gt;&gt;gNum;</P><P>                                 while(InputData(gNum)==0)7 s+ M% Q( J5 e4 n) C* ?* x0 p
                {* F1 Q1 ?/ Z5 t! U3 ^/ ~! _% f
                 cout&lt;&lt;\"&lt;!error&gt;                输入错误的整数\"&lt;&lt;endl;
3 `( j' d! ~  i7 L6 }                                                cout&lt;&lt;\"请输入一个你猜到的四位整数:\";
- E" h4 [6 `) R" i                                                cin&gt;&gt;gNum;
3 W7 P+ z/ f( p, I& ?                }</P><P>                if(sNum==gNum)/ V) u: R6 `: @# P" e0 I0 o( _, o
                {
- W3 j+ u" p5 q" b                 cout&lt;&lt;\"恭喜你,猜正确了!!\"&lt;&lt;endl;# F/ R% e. n. M( ?7 a
                 cout&lt;&lt;\"你试了\"&lt;&lt;k&lt;&lt;\"次猜到正确的数值为:\"&lt;&lt;gNum&lt;&lt;endl;2 Z% z8 T: e$ Z
                 exit(0);
( L% F4 N. o: |5 [" d                }
7 D( w, {+ Z9 e                else
0 I. j- h$ o" _; `" Y0 o! s                {
6 k. ^/ c- j0 p                 GuessEnd(sNum,gNum);) I/ P+ ?& w3 n
                }6 a+ j4 K' m2 a; p& _
}</P><P> cout&lt;&lt;\"猪啊你,猜了8次一次都没猜到。\"&lt;&lt;endl;</P><P> return 0;: N1 ~* b) J! c1 U& U9 [
}</P><P>int InputData(int n)9 ^7 ?0 U0 l0 p; Q. a9 v) }# u
{- h- J4 r' c  N& @
int num[4];</P><P> if( n&gt;=1000 &amp;&amp; n&lt;=9999)
7 I8 ?1 A1 P" ]+ E+ H) p {
' ?0 V  |/ W$ u: @* m                num[0]=n/1000;! t) F% d$ M- b; {. f, D+ j
                num[1]=(n%1000)/100;
. m- N' |9 q& ^* E7 {1 c4 Z7 h                num[2]=((n%1000)%100)/10;
! ]8 y4 g% ~7 |                num[3]=((n%1000)%100)%10;
9 ?( |. y4 y' y- R8 O9 e  F                for(int i=0;i&lt;4;i++)- c! T: Q8 h  ?8 n- G2 d
                {: F9 N7 `/ l* ~( U$ _9 x& z3 R
                 for(int j=i+1;j&lt;4;j++)
8 D) L  a! y' i5 T: w* k                 {* K2 u" f8 z4 ?- K  b
                                if(num<i>==num[j])/ N4 d3 t: ~% g
                                 return 0;5 a! @, z/ D: t0 X
                 }' v8 {* G8 b3 i2 d- s# ?$ S% V
                }" U" O) k0 O3 I+ M( Q' O
}
3 r6 z; v5 P" }) [/ z/ P5 I else
5 W4 r1 C* E1 K5 r+ I {9 P* d, w! I! F* ]5 t
                return 0;8 L# h& L7 R( M2 Y4 K0 S( P
}
" k# P' c8 x! C; B( o return 1;
. u! k1 c7 R9 d# N}</P><P>void GuessEnd(int a,int b)2 H, y4 J/ y* R: ^6 }# i+ T
{% d) u" G# s  f) r4 G
int sNum[4],gNum[4];
8 I2 p% G" h0 K int m,n;</P><P> m=0;                //数字相同个数
; y- M- S; _3 j) V! @ n=0;                 //数字相同时位置相同的个数</P><P> sNum[0]=a/1000;' {4 N3 v2 ?& R: Q' r
sNum[1]=(a%1000)/100;1 P, x" E3 ?# j, A/ s4 u+ }. i9 k
sNum[2]=((a%1000)%100)/10;4 ~; e! f4 j. R( Z5 [
sNum[3]=((a%1000)%100)%10;
7 j# N" b6 u8 ~( F8 u                                gNum[0]=b/1000;
7 R; _& @" {6 F gNum[1]=(b%1000)/100;
7 }1 _& z5 \2 W0 i1 k8 v7 \& W gNum[2]=((b%1000)%100)/10;
; ^* r: s( _% ?- ?; w1 K gNum[3]=((b%1000)%100)%10;</P><P> for(int i=0;i&lt;4;i++)
. X- [5 j$ U% W0 d/ F {0 N. b3 p2 Z) D" m, }. }4 Q
                for(int j=0;j&lt;4;j++)
/ O8 l2 K1 i+ A                {
: @2 W4 h; A( n                 if(sNum<i>==gNum[j])
9 E5 b: o+ K3 ^; y! C7 n  d; W                 {5 _& P$ r# K+ `* D+ L( n
                                m++;
& S/ r+ f7 |$ ], e. l9 B                                if(i==j)+ ?2 y; b7 b5 m9 X0 G4 l$ m
                                {
2 m3 n- ^/ i' Z# F1 n                                 n++;' q6 @+ y* p' _! d, u
                                }
0 z7 n! J% N* W3 x9 R6 O                 }</P><P>                }/ @# P6 l% Q: \. C' i- C
}
' S4 _6 l- |9 n: M$ ~& Z cout&lt;&lt;\"共有\"&lt;&lt;m&lt;&lt;\"个数字相同,但位置相同的有\"&lt;&lt;n&lt;&lt;\"位\"&lt;&lt;endl;
8 c& E+ N. s1 T% m# D9 e4 H8 ?}</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

blackman 发表于 2004-11-25 20:43:19 | 显示全部楼层
<>我没有调试你的程序不知道你的程序调试会有什么错</P><>我按你的上面说的写了一个程序(在vs.net2003)下面写的调试成功</P><>如果你在turboC下运行的话把#include &lt;iostream&gt;
+ O+ x1 |# U- L# vusing namespace std;换成你上面的那个宏定义</P><>然后把cin变成scanf格式</P><>把cout变成printf格式</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

blackman 发表于 2004-11-25 01:29:36 | 显示全部楼层
<>程序在哪里啊</P><>贴上来吧</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

 楼主| cocochen19 发表于 2004-11-25 02:45:01 | 显示全部楼层
/*甲输入一个四位数(必须所有的数字都不一样。系统判断)
% 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&gt;=1000&amp;&amp;n&lt;=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&lt;4;i++), u: J' A8 L! y  F7 L
     { for(j=i+1;j&lt;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)&amp;&amp;((*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\",&amp;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\",&amp;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&lt;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\",&amp;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\",&amp;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}
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

blackman 发表于 2004-11-25 20:45:45 | 显示全部楼层
<>下次发题的时候写上要做什么</P><>出错地方</P><>昨晚不能上网可能回复有点慢</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

手机版|龙江曦月 ( 闽ICP备05009150号-1 )闽公安网备35060202000316

GMT+8, 2025-9-19 04:54 , Processed in 0.025251 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表