|
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执行后
|