找回密码
 立即加入
搜索

查看: 1541|回复: 5

谁帮我呀? c程序 小游戏

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

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

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

×
谁来帮我呀,小程序老是出问题呀
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
blackman 发表于 2004-11-25 20:36:21 | 显示全部楼层
<>#include &lt;iostream&gt;
! W! I9 U2 u: X* Pusing namespace std;</P><>//这是一个判断输入数值是否为4位整数函数</P><>int InputData(int n);</P><>//甲和乙输入数据不一样时的判断函数</P><>void GuessEnd(int a,int b);</P><>int main()
9 @- h$ H; t% f7 p2 X1 k0 f{& z, \7 a; p& d: J* H
int sNum;, c6 l: b2 L4 x6 w+ i% ~# ^- w. |, L
int gNum;</P><> cout&lt;&lt;\"请输入一个正确的待猜四位整数:\";, k. X5 F( X- A1 ^
cin&gt;&gt;sNum;</P><> while(InputData(sNum)==0)' ~. c# B" @/ m6 U: t6 G
{. Z, @% b; F) R+ O6 O
                cout&lt;&lt;\"&lt;!error&gt;                输入错误的整数\"&lt;&lt;endl;) ?" ~( H- P) q" t) r& [3 Q+ r( V
                cout&lt;&lt;\"请输入一个正确的待猜四位整数:\";
  \! k- K& D& F: A2 h4 \) b$ \$ J                cin&gt;&gt;sNum;
8 g& W( N" {7 u- w }</P><>                                system(\"cls\"); //这是一个清屏系统调用,用来清屏掉甲输入的数据以免被乙看见</P><> for(int k=1;k&lt;=8;k++)
: g5 @( A8 ?8 i8 H$ t1 f {6 w# a" O$ ~: ]( h
                cout&lt;&lt;\"请输入一个你猜到的四位整数:\";
" K0 y# h9 ?& c9 F5 K- p                                 cin&gt;&gt;gNum;</P><P>                                 while(InputData(gNum)==0)0 ~# S6 b9 F2 O; X
                {
! D2 z( J6 `2 b) n- u/ ]: I                 cout&lt;&lt;\"&lt;!error&gt;                输入错误的整数\"&lt;&lt;endl;- U# r" {6 C3 L' V8 ?$ ^5 ?
                                                cout&lt;&lt;\"请输入一个你猜到的四位整数:\";
1 T; ^( b# I& H& B                                                cin&gt;&gt;gNum;2 I* i3 F* a; A7 ~) i
                }</P><P>                if(sNum==gNum)
0 T$ k+ R: G! [+ N& q5 Q! m                {
& s6 y+ z: {$ W; A! ~9 \                 cout&lt;&lt;\"恭喜你,猜正确了!!\"&lt;&lt;endl;. v& L) c/ @! z  U% T
                 cout&lt;&lt;\"你试了\"&lt;&lt;k&lt;&lt;\"次猜到正确的数值为:\"&lt;&lt;gNum&lt;&lt;endl;
7 P1 `: A7 R3 y, B' P& t( h7 ]; M                 exit(0);8 L/ {$ z; R0 p. h
                }/ d, H7 o6 }, {' W
                else
. e& _8 L. [2 X% ?9 j# g1 \                {
! [  F) w6 f1 J, o# I. B) F/ k( s! N                 GuessEnd(sNum,gNum);4 m" Y9 k7 D$ O1 ]* {1 A3 F
                }: G% E3 M, _4 `1 _" F2 T
}</P><P> cout&lt;&lt;\"猪啊你,猜了8次一次都没猜到。\"&lt;&lt;endl;</P><P> return 0;4 l4 ~7 }3 C1 F7 U* C+ K
}</P><P>int InputData(int n), p' B8 s4 u1 u$ ^
{
- D6 B% e! ]+ P8 _ int num[4];</P><P> if( n&gt;=1000 &amp;&amp; n&lt;=9999)! X) B( l2 P0 l8 Y* k* L4 p
{. @" N' Z8 _$ Q
                num[0]=n/1000;7 W- h( w1 Q$ ?1 M0 ?
                num[1]=(n%1000)/100;
! a4 g4 w* g# s9 w/ v                num[2]=((n%1000)%100)/10;* R1 \8 u0 ]% e4 X# Z: Y
                num[3]=((n%1000)%100)%10;
4 d( T, I. l+ m                for(int i=0;i&lt;4;i++); I0 G4 h0 B5 f7 `1 @
                {8 |8 J4 O! j, J2 `
                 for(int j=i+1;j&lt;4;j++)
( z+ h! ?4 m  z6 b& C: |                 {7 i+ x3 q( X3 w
                                if(num<i>==num[j])
: a. ~6 N" {; T1 K5 B' }0 Z                                 return 0;
" X/ E8 Y9 i1 N" X% \' y                 }
; }4 }) _- c) V                }
; f0 g' B( m; H }1 H, b! B' Z- I2 z9 a4 {6 z2 n
else. l  C) J1 k# j( I4 K9 F  a  r
{& D( S$ q: ?$ z( s/ q
                return 0;* n9 A/ W0 k- M- Q1 I+ P
}5 H1 e$ f5 ]. Z) `/ Y. I
return 1;
) b- ~! n; R7 y: n1 [! l}</P><P>void GuessEnd(int a,int b)' [: ~: e: B1 A& b. n" G7 @; f
{
- o3 ?$ i+ q( H2 N, |: J- ^+ c5 m int sNum[4],gNum[4];
& B6 N: [, e" t) q* H int m,n;</P><P> m=0;                //数字相同个数: _2 B7 z* z( L) ^
n=0;                 //数字相同时位置相同的个数</P><P> sNum[0]=a/1000;
) M3 I7 u& U# `8 r5 U/ n$ J sNum[1]=(a%1000)/100;. Z6 N2 E& `( c, s' v2 e
sNum[2]=((a%1000)%100)/10;" f; X; X- j! q
sNum[3]=((a%1000)%100)%10;
6 Z6 z7 s) B; _                                gNum[0]=b/1000;
$ A, b, n7 }- G& N5 g8 B( m gNum[1]=(b%1000)/100;
4 [% h3 E# o5 T6 A gNum[2]=((b%1000)%100)/10;; p% F/ Y7 B7 D2 l
gNum[3]=((b%1000)%100)%10;</P><P> for(int i=0;i&lt;4;i++)
9 M1 I3 ]2 W, G: w/ m {
& o- f0 C3 d  M7 X5 e: j, T                for(int j=0;j&lt;4;j++)2 W# I# |3 W+ h9 U
                {$ g7 i& }, M! G0 P- t
                 if(sNum<i>==gNum[j])* T9 M6 o; o5 r( x9 P: a, i9 }4 v
                 {, A  g$ n. ^( T; I! ~
                                m++;
& k& o& x: H$ Y: v                                if(i==j)$ p$ B6 J* P5 y
                                {
& D* c* }5 t2 s& ^& l! N, v; {; G                                 n++;/ s0 a) a! [! |% o8 |
                                }" d  e  M* g1 |- p
                 }</P><P>                }5 @- }# x. B9 C, p4 E: S0 \7 C
}% M" v" I+ X5 \- e$ P0 p* n3 n. G5 t
cout&lt;&lt;\"共有\"&lt;&lt;m&lt;&lt;\"个数字相同,但位置相同的有\"&lt;&lt;n&lt;&lt;\"位\"&lt;&lt;endl;
9 O7 v& O# a7 @& v}</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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