找回密码
 立即加入
搜索

查看: 1542|回复: 5

谁帮我呀? c程序 小游戏

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

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

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

×
谁来帮我呀,小程序老是出问题呀
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
blackman 发表于 2004-11-25 20:36:21 | 显示全部楼层
<>#include &lt;iostream&gt;3 f  h4 Y- e3 j* t
using namespace std;</P><>//这是一个判断输入数值是否为4位整数函数</P><>int InputData(int n);</P><>//甲和乙输入数据不一样时的判断函数</P><>void GuessEnd(int a,int b);</P><>int main()- o8 }& H: s/ ]* ~" o
{5 o! W' D7 d  _1 I- D2 E" y8 A% ?1 M" I
int sNum;4 q" l& v: @1 p0 W# z+ \
int gNum;</P><> cout&lt;&lt;\"请输入一个正确的待猜四位整数:\";
3 _0 q( d- }' [* G cin&gt;&gt;sNum;</P><> while(InputData(sNum)==0)9 K+ u  u, I# Z, W, r6 o
{
( x: H+ J8 g) s. }- o, p: ]                cout&lt;&lt;\"&lt;!error&gt;                输入错误的整数\"&lt;&lt;endl;
9 S9 d& U8 R1 t                cout&lt;&lt;\"请输入一个正确的待猜四位整数:\";
& G% E" q4 I* ^) d2 c, v                cin&gt;&gt;sNum;
( r( i+ c7 t# q3 N* i }</P><>                                system(\"cls\"); //这是一个清屏系统调用,用来清屏掉甲输入的数据以免被乙看见</P><> for(int k=1;k&lt;=8;k++)2 k3 p  D9 ~2 m* `; \
{
4 A3 }- P/ @( H! l; @( Q                cout&lt;&lt;\"请输入一个你猜到的四位整数:\";
7 n& u7 P$ C, I; C. D, A* m                                 cin&gt;&gt;gNum;</P><P>                                 while(InputData(gNum)==0); {6 c3 h9 |' _. ~4 U) B
                {& v& \. a3 g, i0 G9 x1 m+ @
                 cout&lt;&lt;\"&lt;!error&gt;                输入错误的整数\"&lt;&lt;endl;1 h2 {1 K, y+ Z& s4 D/ W8 G9 L7 M! O
                                                cout&lt;&lt;\"请输入一个你猜到的四位整数:\";7 a* k5 T* T6 n% _5 r) S
                                                cin&gt;&gt;gNum;
( Z- I2 Q2 g/ |8 j2 {: C                }</P><P>                if(sNum==gNum)+ i$ Y0 X+ p  E  r3 X- R* r
                {5 |9 F7 r) m. u# i% K4 V
                 cout&lt;&lt;\"恭喜你,猜正确了!!\"&lt;&lt;endl;; [  k! O7 r( C' }  ~
                 cout&lt;&lt;\"你试了\"&lt;&lt;k&lt;&lt;\"次猜到正确的数值为:\"&lt;&lt;gNum&lt;&lt;endl;
$ ]9 m8 x/ K* S& P/ X                 exit(0);! I, A$ C3 X' ]  H
                }: n' f/ f; q" X8 g7 Q. b$ n. F& J
                else" m1 T/ }7 P. G  d  y
                {
; J. P0 [+ I4 N% |: ?2 x" g" t                 GuessEnd(sNum,gNum);
( k. D" e# P% r) N1 |9 l' R9 w                }
. J  L1 ?5 c6 e, }% k }</P><P> cout&lt;&lt;\"猪啊你,猜了8次一次都没猜到。\"&lt;&lt;endl;</P><P> return 0;1 X  p9 b" T3 \" a! a
}</P><P>int InputData(int n)
; x# \' A3 R% |7 y- w  r{; x9 P+ Y7 F1 b- Z6 G+ s
int num[4];</P><P> if( n&gt;=1000 &amp;&amp; n&lt;=9999)
( D$ m0 n. e/ a* C9 {9 D# k {  f* O! @/ w1 X' x: {" q
                num[0]=n/1000;5 j7 s5 o+ z; Y' h# y5 w
                num[1]=(n%1000)/100;
( J  `1 M9 D0 ?                num[2]=((n%1000)%100)/10;1 a; A4 Q) ^6 R
                num[3]=((n%1000)%100)%10;
6 h* @7 j) d, |  ~* U1 ^9 N                for(int i=0;i&lt;4;i++)
( T: d$ g; Y; H/ r5 }4 J' W' B* Q                {2 h. w  \, `) m' t3 F3 T
                 for(int j=i+1;j&lt;4;j++)) ?% e8 q9 ~6 N3 ~
                 {$ H# A  J8 e. Q8 m+ C5 L& c8 Y
                                if(num<i>==num[j])3 W' r3 j5 g& z" \
                                 return 0;% ~! x. y7 z4 y0 Y
                 }& ?/ T( a5 [9 A  _: N5 |6 Q
                }' [2 K1 d" b$ e9 n/ O: F$ ?( |) n
}
2 _7 b3 t  K4 O# C' }$ f else1 T8 @9 k, i; C4 J8 K
{, n0 q; _, s2 _* n  u* m
                return 0;
3 @$ P, h4 P$ _- u8 q: Y& H }
. [2 T. m2 m+ I' w; t5 Y return 1;( W* C* i/ z4 X5 C. Q% k6 }6 G% }% N
}</P><P>void GuessEnd(int a,int b)
$ }+ T) K; Y, J' A$ t, Y{2 J) X. I9 I' g/ x8 O. H; J6 o9 [" ^
int sNum[4],gNum[4];! _, F( [+ ^' z- ~- |
int m,n;</P><P> m=0;                //数字相同个数) L; v0 C9 B; D: `+ z
n=0;                 //数字相同时位置相同的个数</P><P> sNum[0]=a/1000;
& N  K# n- y& A7 W* \ sNum[1]=(a%1000)/100;
9 ]/ P5 M! w2 f sNum[2]=((a%1000)%100)/10;3 ~  g& i9 B# o. P$ C; O
sNum[3]=((a%1000)%100)%10;' R- u* ?" z; F
                                gNum[0]=b/1000;
1 u7 A. u2 _* ?9 N, j$ ]; s gNum[1]=(b%1000)/100;
5 P4 K5 p7 j+ y+ c4 [/ D gNum[2]=((b%1000)%100)/10;4 P( q8 D$ H+ \
gNum[3]=((b%1000)%100)%10;</P><P> for(int i=0;i&lt;4;i++)
; {. g" t' g: b. e7 {+ R# x {
* Y& C8 v/ d! F9 P! V" _6 y                for(int j=0;j&lt;4;j++)
; U& v2 ?  q7 V9 b2 H0 g% `7 ]                {
4 T, G  n  B! V. W2 n                 if(sNum<i>==gNum[j])
0 A4 v( x1 G% G8 w: {( x                 {: p5 ?7 R4 b4 c8 S
                                m++;
+ z2 [5 `. |+ }' n( _- `' ^0 p! |  G                                if(i==j)
1 V/ }7 J9 X/ j% B- L4 Z                                {
# A& [2 w: ]5 Z4 K" i                                 n++;9 C$ G7 L2 r  T: F/ _! w8 X( x
                                }. M# c$ U3 R0 j- t. X4 C
                 }</P><P>                }3 f4 [/ N7 a# i. h, m& B. z
}, C. O) y1 n( v" k" K- k
cout&lt;&lt;\"共有\"&lt;&lt;m&lt;&lt;\"个数字相同,但位置相同的有\"&lt;&lt;n&lt;&lt;\"位\"&lt;&lt;endl;
# q3 U" y: @: D) p8 l}</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

blackman 发表于 2004-11-25 20:43:19 | 显示全部楼层
<>我没有调试你的程序不知道你的程序调试会有什么错</P><>我按你的上面说的写了一个程序(在vs.net2003)下面写的调试成功</P><>如果你在turboC下运行的话把#include &lt;iostream&gt;
6 j) [2 S8 ?0 Z# S8 {. ?& |( T# cusing 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 | 显示全部楼层
/*甲输入一个四位数(必须所有的数字都不一样。系统判断)! 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&gt;=1000&amp;&amp;n&lt;=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&lt;4;i++)
5 Q7 V/ S0 |2 q     { for(j=i+1;j&lt;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)&amp;&amp;((*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\",&amp;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\",&amp;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&lt;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\",&amp;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\",&amp;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
}
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-25 18:47 , Processed in 0.043594 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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