1秒钟赢牌

博客介绍了Windows自带纸牌游戏的免玩获胜技巧。很多人喜欢该游戏赢后效果,实际上开局后按Alt+Shift+2,就能看到和赢时一样的漂亮效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  大家可能都玩过Windows自带的纸牌游戏,可能很多人也很喜欢它赢后那个效果,非常漂亮。其实不用玩也能赢,在开局后按Alt+Shift+2即可,看到了吗?漂亮的效果,跟赢时一样!
{"content":"任务描述 \n 本关任务:给定任意6张给甲、乙,设计一个程序判定“纸牌游戏-钓鱼”的胜者。 \n \n 相关知识 \n 游戏规则:将一副扑克去掉花10,只留下1~9的,即扑克只有0-9之间的数字,平均分成二份,每人拿一份,不妨设为甲、乙二人,甲先拿出手中的第一张扑克放在桌上,然后乙也拿出手中的第一张扑克,并放在刚打出的扑克的上面。出时,如果谁打出的与桌上某张面相同,可将二张及中间所夹的全部取走,并依次放到手中的末尾,然后继续出,直到打出的与桌上的都不相同,就这样两人交替出。当一人手中没可出时,游戏结束,对手获胜。 \n \n 先来分析游戏中的几种操作,分别是出,每个人的手可以设置成队列结构,这恰好对应队列的两个操作,出就是出队,就是入队。桌子可设置成一个栈的结构,每打出一张放到桌上就相当于入栈。当有人的时候,依次将从桌上拿走,这就相当于出栈。如果某人打出的与桌子上的某张相同,即可将两张以及中间所夹的全部取走,即全部出栈,并且加入此人的队列。当一个人手中的先出完时,游戏结束,对方获胜。 \n \n 本实训任务使用顺序栈和循环队列,顺序栈的头文件为sqstack.h,实现文件为sqstack.cpp,顺序队列的头文件为sqqueue.h,实现文件为sqqueue.cpp。 \n \n 根据游戏的规则,定义二个队列,一个栈,二个队列交替出队,一个队列出队时,首先要在栈中查找是否有元素和此队列出队的元素相同,在顺序栈中查找是否有某张时,可以参考 \n 顺序表按照值查找序号操作算法 \n \n 当一个队列出队时,若出队的元素和栈中的某个元素k相同,则,出队的元素进入自己的队列,再将栈中的元素挨个出栈直到k,每出栈一个,就插入队列,队列在将栈中拿完以后,必须继续出,当栈中没有与出队元素相同的时,轮到另一个队列出。当某队列为空时,游戏结束,非空队列代表者获胜。 \n \n int LocateElem_Sq(SqStack L, SElemType e, int (*compare)(SElemType, SElemType)) \n { \n // 在顺序栈L中查找第1个值与e满足compare()的元素的位序。 \n // 若找到,则返回其在L中的位序,否则返回0。 \n int i; \n SElemType *p; \n i = 0; // i的初值为第1个元素的位序 \n p = L.base; // p的初值为第1个元素的存储位置 \n int length = L.top-L.base; \n while (i <length && !(*compare)(*p++, e)) \n ++i; \n if (i < length) \n return i; \n else \n return -1; \n } \n 编程要求 \n 根据提示,在右侧编辑器补充代码,要注意的是出时,如果谁打出的与桌上某张面相同,将二张及中间所夹的全部取走后,应该继续出,直到打出的与桌上的都不相同。 \n \n 测试说明 \n 平台会对你编写的代码进行测试: \n \n 测试输入: \n 2 4 1 2 5 6 \n 3 1 3 5 6 4 \n 预期输出: \n 甲:4,1,2,5,6, \n 乙:1,3,5,6,4, \n 栈:2,3, \n 甲:1,2,5,6, \n 乙:3,5,6,4, \n 栈:2,3,4,1, \n 甲:6,1,1,2,4,3,2, \n 乙:5,6,4, \n 栈:5,3, \n 甲:1,2,4,3,2, \n 乙:4,5,6,3,5, \n 栈:6,1, \n 甲:2,4,3,2,1,4,1, \n 乙:5,6,3,5, \n 栈:6, \n 甲:4,3,2,1,4,1, \n 乙:6,3,5, \n 栈:6,2,5, \n 甲:2,1,4,1,3,3, \n 乙:5,6,4,5,2,6, \n 栈: \n 甲:1,4,1,3,3, \n 乙:6,4,5,2,6, \n 栈:2,5, \n 甲:4,1,3,3, \n 乙:4,5,2,6, \n 栈:2,5,1,6, \n 甲:3,3, \n 乙:4,4,5,6,1,5,2,2, \n 栈:6,1, \n 甲:3, \n 乙:4,5,6,1,5,2,2, \n 栈:6,1,4,3, \n 甲: \n 乙:6,1,5,2,2,4,3,4, \n 栈:6,1,5,3, \n 甲: \n 乙:6,1,5,2,2,4,3,4, \n 栈:6,1,5,3, \n 乙获胜 \n \n 输入说明 \n 第一行输入甲手中的6张; \n 第二行输入乙手中的6张。 \n \n 输出说明 \n 甲先出,如果发现桌面上有跟刚才打出的的数字相同的,则把从相同的那张开始的全部按次序放在自己手里的的末尾,再继续出,当桌面上没有跟刚才打出的的数字相同的时,分三行输出甲手里的,乙手里的,桌上的;同理,轮到乙出后,分三行输出甲手里的,乙手里的,桌上的,直到有一方获胜。# include <stdio.h> \n # include <stdlib.h> \n # include <string.h> \n \n typedef int SElemType; \n typedef int QElemType; \n \n # include \"sqstack.h\" \n # include \"sqqueue.h\" \n \n void output(QElemType s); \n void input(QElemType &s); \n void outputS(SElemType s); \n void inputS(SElemType &s); \n int comp(SElemType a, SElemType b); \n int LocateElem_Sq(SqStack L, SElemType e, int (*compare)(SElemType, SElemType)) ; \n \n int main() \n { \n \t SqQueue q1,q2; //定义二个队列,代表甲、乙手中的 \n \t SqStack s; //定义一个栈,代表桌面上的 \n \t int i,t,x,n; \n \t InitQueue(q1); \n \t InitQueue(q2); \n \t InitStack(s); \t \n \t for(i=1;i<=6;i++) \n \t { \n \t \t scanf(\"%d\",&t); \n \t EnQueue(q1,t); \n \t } \n \t for(i=1;i<=6;i++) \n \t { \n \t \t scanf(\"%d\",&t); \n \t \t EnQueue(q2,t); \n \t } \n // 请在这里补充代码,完成本关任务 \n /********** Begin **********/ \n \t \n \t \n \t /********** End **********/ \t \n return 0; \n } \n \n int LocateElem_Sq(SqStack L, SElemType e, int (*compare)(SElemType, SElemType)) \n { \n // 在顺序栈L中查找第1个值与e满足compare()的元素的位序。 \n // 若找到,则返回其在L中的位序,否则返回0。 \n int i; \n SElemType *p; \n i = 0; // i的初值为第1个元素的位序 \n p = L.base; // p的初值为第1个元素的存储位置 \n int length = L.top-L.base; \n while (i <length && !(*compare)(*p++, e)) \n ++i; \n if (i < length) \n \t return i; \n else \n \t return -1; \n } // LocateElem_Sq \n \n void output(QElemType s) \n { \n \t printf(\"%d,\",s); \t \n } \n \n void input(QElemType &s) \n { \t \n \t scanf(\"%d\",&s); \t \n } \n void outputS(SElemType s) \n { \n \t printf(\"%d,\",s); \t \n } \n \n void inputS(SElemType &s) \n { \t \n \t scanf(\"%d\",&s); \t \n } \n int comp(SElemType a, SElemType b) \n { \n \t if(a>b) \n \t \t return 0; \n \t else \n \t \t if(a == b) \n \t \t \t return 1; \n \t \t else \n \t \t \t return 0; \n }","multiMedia":[],"parsedQuery":["任务描述","\n","本关任务:给定任意6张给甲、乙,设计一个程序判定“纸牌游戏-钓鱼”的胜者。","\n","\n","相关知识","\n","游戏规则:将一副扑克去掉花10,只留下1~9的,即扑克只有0-9之间的数字,平均分成二份,每人拿一份,不妨设为甲、乙二人,甲先拿出手中的第一张扑克放在桌上,然后乙也拿出手中的第一张扑克,并放在刚打出的扑克的上面。出时,如果谁打出的与桌上某张面相同,可将二张及中间所夹的全部取走,并依次放到手中的末尾,然后继续出,直到打出的与桌上的都不相同,就这样两人交替出。当一人手中没可出时,游戏结束,对手获胜。","\n","\n","先来分析游戏中的几种操作,分别是出,每个人的手可以设置成队列结构,这恰好对应队列的两个操作,出就是出队,就是入队。桌子可设置成一个栈的结构,每打出一张放到桌上就相当于入栈。当有人的时候,依次将从桌上拿走,这就相当于出栈。如果某人打出的与桌子上的某张相同,即可将两张以及中间所夹的全部取走,即全部出栈,并且加入此人的队列。当一个人手中的先出完时,游戏结束,对方获胜。","\n","\n","本实训任务使用顺序栈和循环队列,顺序栈的头文件为sqstack.h,实现文件为sqstack.cpp,顺序队列的头文件为sqqueue.h,实现文件为sqqueue.cpp。","\n","\n","根据游戏的规则,定义二个队列,一个栈,二个队列交替出队,一个队列出队时,首先要在栈中查找是否有元素和此队列出队的元素相同,在顺序栈中查找是否有某张时,可以参考","\n","顺序表按照值查找序号操作算法","\n","\n","当一个队列出队时,若出队的元素和栈中的某个元素k相同,则,出队的元素进入自己的队列,再将栈中的元素挨个出栈直到k,每出栈一个,就插入队列,队列在将栈中拿完以后,必须继续出,当栈中没有与出队元素相同的时,轮到另一个队列出。当某队列为空时,游戏结束,非空队列代表者获胜。","\n","\n","int LocateElem_Sq(SqStack L, SElemType e, int (*compare)(SElemType, SElemType)) ","\n","{ ","\n"," // 在顺序栈L中查找第1个值与e满足compare()的元素的位序。","\n"," // 若找到,则返回其在L中的位序,否则返回0。","\n"," int i;","\n"," SElemType *p;","\n"," i = 0; // i的初值为第1个元素的位序","\n"," p = L.base; // p的初值为第1个元素的存储位置","\n"," int length = L.top-L.base;","\n"," while (i <length && !(*compare)(*p++, e)) ","\n"," ++i;","\n"," if (i < length) ","\n"," return i;","\n"," else ","\n"," return -1;","\n","}","\n","编程要求","\n","根据提示,在右侧编辑器补充代码,要注意的是出时,如果谁打出的与桌上某张面相同,将二张及中间所夹的全部取走后,应该继续出,直到打出的与桌上的都不相同。","\n","\n","测试说明","\n","平台会对你编写的代码进行测试:","\n","\n","测试输入:","\n","2 4 1 2 5 6","\n","3 1 3 5 6 4","\n","预期输出:","\n","甲:4,1,2,5,6,","\n","乙:1,3,5,6,4,","\n","栈:2,3,","\n","甲:1,2,5,6,","\n","乙:3,5,6,4,","\n","栈:2,3,4,1,","\n","甲:6,1,1,2,4,3,2,","\n","乙:5,6,4,","\n","栈:5,3,","\n","甲:1,2,4,3,2,","\n","乙:4,5,6,3,5,","\n","栈:6,1,","\n","甲:2,4,3,2,1,4,1,","\n","乙:5,6,3,5,","\n","栈:6,","\n","甲:4,3,2,1,4,1,","\n","乙:6,3,5,","\n","栈:6,2,5,","\n","甲:2,1,4,1,3,3,","\n","乙:5,6,4,5,2,6,","\n","栈:","\n","甲:1,4,1,3,3,","\n","乙:6,4,5,2,6,","\n","栈:2,5,","\n","甲:4,1,3,3,","\n","乙:4,5,2,6,","\n","栈:2,5,1,6,","\n","甲:3,3,","\n","乙:4,4,5,6,1,5,2,2,","\n","栈:6,1,","\n","甲:3,","\n","乙:4,5,6,1,5,2,2,","\n","栈:6,1,4,3,","\n","甲:","\n","乙:6,1,5,2,2,4,3,4,","\n","栈:6,1,5,3,","\n","甲:","\n","乙:6,1,5,2,2,4,3,4,","\n","栈:6,1,5,3,","\n","乙获胜","\n","\n","输入说明","\n","第一行输入甲手中的6张;","\n","第二行输入乙手中的6张。","\n","\n","输出说明","\n","甲先出,如果发现桌面上有跟刚才打出的的数字相同的,则把从相同的那张开始的全部按次序放在自己手里的的末尾,再继续出,当桌面上没有跟刚才打出的的数字相同的时,分三行输出甲手里的,乙手里的,桌上的;同理,轮到乙出后,分三行输出甲手里的,乙手里的,桌上的,直到有一方获胜。# include <stdio.h>","\n","# include <stdlib.h>","\n","# include <string.h>","\n","\n","typedef int SElemType;","\n","typedef int QElemType;","\n","\n","# include \"sqstack.h\"","\n","# include \"sqqueue.h\"","\n","\n","void output(QElemType s);","\n","void input(QElemType &s);","\n","void outputS(SElemType s);","\n","void inputS(SElemType &s);","\n","int comp(SElemType a, SElemType b);","\n","int LocateElem_Sq(SqStack L, SElemType e, int (*compare)(SElemType, SElemType)) ;","\n","\n","int main()","\n","{","\n","\t","SqQueue q1,q2; //定义二个队列,代表甲、乙手中的","\n","\t","SqStack s; //定义一个栈,代表桌面上的","\n","\t","int i,t,x,n;","\n","\t","InitQueue(q1);","\n","\t","InitQueue(q2);","\n","\t","InitStack(s);","\t","\n","\t","for(i=1;i<=6;i++)","\n","\t","{","\n","\t","\t","scanf(\"%d\",&t);","\n"," ","\t","EnQueue(q1,t);","\n","\t","}","\n","\t","for(i=1;i<=6;i++)","\n","\t","{","\n","\t","\t","scanf(\"%d\",&t);","\n","\t","\t","EnQueue(q2,t);","\n","\t","}","\n"," // 请在这里补充代码,完成本关任务","\n"," /********** Begin **********/ ","\n","\t","\n","\t","\n","\t","/********** End **********/","\t","\n"," return 0;","\n","}","\n","\n","int LocateElem_Sq(SqStack L, SElemType e, int (*compare)(SElemType, SElemType)) ","\n","{ ","\n"," // 在顺序栈L中查找第1个值与e满足compare()的元素的位序。","\n"," // 若找到,则返回其在L中的位序,否则返回0。","\n"," int i;","\n"," SElemType *p;","\n"," i = 0; // i的初值为第1个元素的位序","\n"," p = L.base; // p的初值为第1个元素的存储位置","\n"," int length = L.top-L.base;","\n"," while (i <length && !(*compare)(*p++, e)) ","\n"," ++i;","\n"," if (i < length) ","\n","\t"," return i;","\n"," else ","\n","\t"," return -1;","\n","} // LocateElem_Sq","\n","\n","void output(QElemType s)","\n","{","\n","\t","printf(\"%d,\",s);","\t"," ","\n","}","\n","\n","void input(QElemType &s)","\n","{ ","\t","\n","\t","scanf(\"%d\",&s);","\t","\n","}","\n","void outputS(SElemType s)","\n","{","\n","\t","printf(\"%d,\",s);","\t"," ","\n","}","\n","\n","void inputS(SElemType &s)","\n","{ ","\t","\n","\t","scanf(\"%d\",&s);","\t","\n","}","\n","int comp(SElemType a, SElemType b)","\n","{","\n","\t","if(a>b)","\n","\t","\t","return 0;","\n","\t","else","\n","\t","\t","if(a == b)","\n","\t","\t","\t","return 1;","\n","\t","\t","else","\n","\t","\t","\t","return 0;","\n","}"]}
最新发布
06-30
任务描述 本关任务:给定任意6张给甲、乙,设计一个程序判定“纸牌游戏-钓鱼”的胜者。 相关知识 游戏规则:将一副扑克去掉花10,只留下1~9的,即扑克只有0-9之间的数字,平均分成二份,每人拿一份,不妨设为甲、乙二人,甲先拿出手中的第一张扑克放在桌上,然后乙也拿出手中的第一张扑克,并放在刚打出的扑克的上面。出时,如果谁打出的与桌上某张面相同,可将二张及中间所夹的全部取走,并依次放到手中的末尾,然后继续出,直到打出的与桌上的都不相同,就这样两人交替出。当一人手中没可出时,游戏结束,对手获胜。 先来分析游戏中的几种操作,分别是出,每个人的手可以设置成队列结构,这恰好对应队列的两个操作,出就是出队,就是入队。桌子可设置成一个栈的结构,每打出一张放到桌上就相当于入栈。当有人的时候,依次将从桌上拿走,这就相当于出栈。如果某人打出的与桌子上的某张相同,即可将两张以及中间所夹的全部取走,即全部出栈,并且加入此人的队列。当一个人手中的先出完时,游戏结束,对方获胜。 本实训任务使用顺序栈和循环队列,顺序栈的头文件为sqstack.h,实现文件为sqstack.cpp,顺序队列的头文件为sqqueue.h,实现文件为sqqueue.cpp。 根据游戏的规则,定义二个队列,一个栈,二个队列交替出队,一个队列出队时,首先要在栈中查找是否有元素和此队列出队的元素相同,在顺序栈中查找是否有某张时,可以参考 顺序表按照值查找序号操作算法 当一个队列出队时,若出队的元素和栈中的某个元素k相同,则,出队的元素进入自己的队列,再将栈中的元素挨个出栈直到k,每出栈一个,就插入队列,队列在将栈中拿完以后,必须继续出,当栈中没有与出队元素相同的时,轮到另一个队列出。当某队列为空时,游戏结束,非空队列代表者获胜。 int LocateElem_Sq(SqStack L, SElemType e, int (*compare)(SElemType, SElemType)) { // 在顺序栈L中查找第1个值与e满足compare()的元素的位序。 // 若找到,则返回其在L中的位序,否则返回0。 int i; SElemType *p; i = 0; // i的初值为第1个元素的位序 p = L.base; // p的初值为第1个元素的存储位置 int length = L.top-L.base; while (i <length && !(*compare)(*p++, e)) ++i; if (i < length) return i; else return -1; } 编程要求 根据提示,在右侧编辑器补充代码,要注意的是出时,如果谁打出的与桌上某张面相同,将二张及中间所夹的全部取走后,应该继续出,直到打出的与桌上的都不相同。 测试说明 平台会对你编写的代码进行测试: 测试输入: 2 4 1 2 5 6 3 1 3 5 6 4 预期输出: 甲:4,1,2,5,6, 乙:1,3,5,6,4, 栈:2,3, 甲:1,2,5,6, 乙:3,5,6,4, 栈:2,3,4,1, 甲:6,1,1,2,4,3,2, 乙:5,6,4, 栈:5,3, 甲:1,2,4,3,2, 乙:4,5,6,3,5, 栈:6,1, 甲:2,4,3,2,1,4,1, 乙:5,6,3,5, 栈:6, 甲:4,3,2,1,4,1, 乙:6,3,5, 栈:6,2,5, 甲:2,1,4,1,3,3, 乙:5,6,4,5,2,6, 栈: 甲:1,4,1,3,3, 乙:6,4,5,2,6, 栈:2,5, 甲:4,1,3,3, 乙:4,5,2,6, 栈:2,5,1,6, 甲:3,3, 乙:4,4,5,6,1,5,2,2, 栈:6,1, 甲:3, 乙:4,5,6,1,5,2,2, 栈:6,1,4,3, 甲: 乙:6,1,5,2,2,4,3,4, 栈:6,1,5,3, 甲: 乙:6,1,5,2,2,4,3,4, 栈:6,1,5,3, 乙获胜 输入说明 第一行输入甲手中的6张; 第二行输入乙手中的6张。 输出说明 甲先出,如果发现桌面上有跟刚才打出的的数字相同的,则把从相同的那张开始的全部按次序放在自己手里的的末尾,再继续出,当桌面上没有跟刚才打出的的数字相同的时,分三行输出甲手里的,乙手里的,桌上的;同理,轮到乙出后,分三行输出甲手里的,乙手里的,桌上的,直到有一方获胜。 开始你的任务吧,祝你成功!
05-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值