大侠帮忙啊
楼主
我刚编的一个c程序 在TC2.0上运行,可是结果有时对,有时错. 到底哪里错了,大侠帮帮我吧. 题目:猜数字游戏,又系统随机产生一个四位数,玩家输入一个四位数. 数字和位置都对用A表示.数字对位置不对用B表示.如随机产生1234 猜1253则显示2A1B. 下面是我写的程序:#include <conio.h> #include <time.h> #include <stdlib.h> int isolate(int *p,int x) { int *p1,i,t; for(p1=p,i=x;i>0;i=(i-i%10)/10,p1++) {if(i<10){*p1=i;*(p1+1)='\0';t=p1-p+1;} else *p1=i%10;} return(t); } int f1(int *p2,int *p3) { int c; for(c=0;*p2!='\0';p2++,p3++) if(*p2==*p3)c++; return(c); } int f2(int *p4,int *p5) { int z,*p6; for(z=0;*p5!='\0';p5++) for(p6=p4;*p6!='\0';p6++) if(*p6==*p5){z++;break;} return(z); } main() { int a[10],b[10],m,s,k,r,h,j,l; for(k='y';k!='n';) { clrscr(); randomize(); m=random(9000)+1000; r=isolate(a,m); printf("please input 4 digitglly integer\n"); printf("%d\n",m); for(j=0;j<3;j++) { scanf("%d",&s); isolate(b,s); h=f1(a,b); l=f2(a,b); if(h==r){printf("You Win\nreplay(y/n)");k=getch();break;} else{printf("%dA%dB\n",h,l-h); if(j==2){printf("You lose the play\nreplay(y/n)");k=getch();}} } } } |