|
10鱼币
请问老哥们,为什么name3明明没有传入Shuf这个函数,但是在执行Shuf函数后name3的值被修改了呢?
下面是出的代码(删除了手牌内容输出),请老哥们帮忙看看#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void Licen(int *);
void Shuf(int*,int*,int*,int*);
void Display(int *,int *,int *,char *,char *,char *);
void Licen(int *str)
{
int i = 0,n;
srand((unsigned)time(NULL));
for(i = 0;i < 54;i ++)
{
str[i] = rand()%54+1;
for(n = 0;n < i;n ++)
{
if(str[n] == str[i])
{
i--;
break;
}
}
}
}
void Shuf(int *name1p,int *name2p,int *name3p,int *str)
{
int i,j;
for(i = 0,j = 0;i < 54;j ++)
{
name1p[j] = str[i++];
name2p[j] = str[i++];
name3p[j] = str[i++];
}
}
void Display(int *name1p,int *name2p,int *name3p,char *name1,char *name2,char *name3)
{
int i;
printf("%s手上的牌是:",name1);
printf("%s手上的牌是:",name2);
printf("%s手上的牌是:",name3);
}
int main()
{
char flag;
char name1[10] = {0};
char name2[10] = {0};
char name3[10] = {0};
int name1p[14] = {0};
int name2p[14] = {0};
int name3p[14] = {0};
int str[54] = {0};
printf("请输入1号玩家的名字:");
scanf("%s",&name1);
printf("请输入2号玩家的名字:");
scanf("%s",&name2);
printf("请输入3号玩家的名字:");
scanf("%s",&name3);
printf("%s,%s,%s\n",name1,name2,name3);
do{
printf("方=方角,梅=梅花,红=红桃,黑=黑桃\n");
Licen(str);
Shuf(name1p,name2p,name3p,str);
printf("name3 = %s\n",name3);
Display(name1p,name2p,name3p,name1,name2,name3);
printf("重新洗牌(Y/N)?");
getchar();
scanf("%c",&flag);
}while(flag == 'Y');
return 0;
}
认真一点 #include<stdio.h>
#include<stdlib.h>
#include<time.h>
void Licen(int *);
void Shuf(int*,int*,int*,int*);
void Display(int *,int *,int *,char *,char *,char *);
void Licen(int *str)
{
int i = 0,n;
srand((unsigned)time(NULL));
for(i = 0;i < 54;i ++)
{
str[i] = rand()%54+1;
for(n = 0;n < i;n ++)
{
if(str[n] == str[i])
{
i--;
break;
}
}
}
}
void Shuf(int *name1p,int *name2p,int *name3p,int *str)
{
int i,j;
for(i = 0,j = 0;i < 54;j ++)
{
name1p[j] = str[i++];
name2p[j] = str[i++];
name3p[j] = str[i++];
}
}
void Display(int *name1p,int *name2p,int *name3p,char *name1,char *name2,char *name3)
{
int i;
printf("%s手上的牌是:",name1);
printf("%s手上的牌是:",name2);
printf("%s手上的牌是:",name3);
}
int main()
{
char flag;
char name1[10] = {0};
char name2[10] = {0};
char name3[10] = {0};
//int name1p[14] = {0}; // 14个?
//int name2p[14] = {0};
//int name3p[14] = {0};
int name1p[54] = {0};
int name2p[54] = {0};
int name3p[54] = {0};
int str[54] = {0};
printf("请输入1号玩家的名字:");
scanf("%s",name1);
printf("请输入2号玩家的名字:");
scanf("%s",name2);
printf("请输入3号玩家的名字:");
scanf("%s",name3);
printf("%s,%s,%s\n",name1,name2,name3);
do{
printf("方=方角,梅=梅花,红=红桃,黑=黑桃\n");
Licen(str);
Shuf(name1p,name2p,name3p,str);
printf("%s,%s,%s\n",name1,name2,name3);
printf("name3 = %s\n",name3);
Display(name1p,name2p,name3p,name1,name2,name3);
printf("重新洗牌(Y/N)?");
getchar();
scanf("%c",&flag);
}while(flag == 'Y');
return 0;
}
|
-
Shuf执行前
-
Shuf执行后
|