自己写的C程序,不知道为什么会这样输出,高的帮看一下!谢谢
代码如下:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
main()
{
int num;
num = count(6,0);
printf("player1 score=%d",num);
printf("\n");
getch();
}
int count(int gs,int score)
{
int sz[6];int num[6]={0,0,0,0,0,},score_now;
int *p;
int i;
randomize();
for(i=0;i<gs;i++)
{
sz[i] = random(100)%6 + 1;
if(sz[i] == 1)
{
num[0]++;
}
if(sz[i] == 2)
{
num[1]++;
}
if(sz[i] == 3)
{
num[2]++;
}
if(sz[i] == 4)
{
num[3]++;
}
if(sz[i] == 5)
{
num[4]++;
}
if(sz[i] == 6)
{
num[5]++;
}
printf("%d\t",sz[i]);
}
p = countScore(num,gs,score);
gs = *p;
score = *(p+1);
score_now = *(p+2);
printf("\n score1111:%d\n",score);
printf("score_now1111:%d\n",score_now);
printf("\n gs:%d\n",gs);
if(score_now == 0 || score < 300){
score = 0;
}else{
if(gs > 0) {
count(gs,score);
}
}
printf("return1111:%d\n",score);
return score;
}
int countScore(int num[],int gs,int score1)
{
int tmp = 0,i,ret[3],score_now = 0;
int *p1;
if(num[0] == 6){
score1 += 3000;
score_now += 3000;
num[0] -= 6;
gs -= 6;
tmp += 3000;
}
if(num[0] >0){
score1 += num[0]*100;
score_now += num[0]*100;
tmp += num[0]*100;
gs -= num[0];
num[0] = 0;
}
for(i=1; i<6; i++){
if(num[i] >= 3){
score1 += (i+1)*100;
score_now += (i+1)*100;
num[i] -= 3;
gs -= 3;
tmp += (i+1)*100;
}
}
if(num[4] > 0){
score1 += num[4]*50;
score_now += num[4]*50;
tmp += num[4]*50;
gs -= num[4];
num[4] = 0;
}
ret[0] = gs;
ret[1] = score1;
ret[2] = score_now;
p1 = ret;
return p1;
}
红字的打印语句有时会输出好几个,这是为什么啊?