编程变魔术
A. php魔术方法。。
在 PHP 里,将所有以 __(两个下划线)开头的类方法保留为魔术方法,所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀。
魔术方法的引入是对面向对象编程思想的进一步实现,重载就是通过魔术方法来实现的。
PHP 魔术方法主要有:
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(),__sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等。
最常见的是__construct(), __destruct(),__get(), __set()等:
__construct和__destruct是类的构造函数和析构函数。
B. 手机计算机魔术
魔术师的,因为手机信息有他的一个计算模式串啊,那街上模式的话要根据手机的过啊性能标配的一个功能才能进行,有的手机可以,有的手机不可以要看你自己的手机型号。
C. php魔术方法怎么用
在 PHP 里,将所有以 __(两个下划线)开头的类方法保留为魔术方法。魔术方法的引入是对面向对象编程思想的进一步实现,重载就是通过魔术方法来实现的。主要有:
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(),__sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等函数。
D. 编程魔术师要每位观众心里想一个三位数abc(a,b,c分别是百位,十位和个位数字),然后
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
intMagic(intm);
intTput(inta,intb,intc);
main()
{
intm;//观众求出的五个数的和
intM;//魔术师算出的三位数
scanf("%d",&m);
M=Magic(m);
if(M==99)//循环过后,所有三位数都不符合
printf("Thesumyoucalculatediswrong! ");
else
printf("Thenumberis%d ",M);
system("pause");
}
//函数功能:输出观众心里的三位数
intMagic(intm)
{
inta,b,c;//分别储存循环中三位数的百十个位
inti;//循环变量
ints;//储存循环中计算的和
//循环遍历每一个三位数
for(i=999;i>99;i--)
{
//分离每个三位数
a=i/100;
b=i%100/10;
c=i%10;
s=Tput(a,c,b)+Tput(b,a,c)+Tput(b,c,a)+Tput(c,a,b)+Tput(c,b,a);
if(s==m)
break;
}
returni;
}
//函数功能:输入百十个位,输出一个三位数
intTput(inta,intb,intc)
{
returna*100+b*10+c;
}
E. c语言魔术师猜牌
//在本程序中,以a[1]~a[26]顺序记录原来的牌面,以自增的变量i记录黑桃A,2,。。。K,红桃A,2,。。。K;
#include<stdio.h>
int a[27];
int main(){
int i,n,j=1;
a[1]=1; //a[1]记录第一张牌,显然为黑桃A;
printf("The original order of cards is:(r:red b:black):\n");
for(i=2;i<=26;i++){ //循环变量i,i对应唯一的牌面;
n=1; //n赋值为1,与下文 while(n<=3)呼应;
do{
if(j>26) //j>26是,值改变为1;
j=1;
if(a[j]) //如果a[j]已记录牌面,j自增1,使a[j]下移记录下一张牌面,否则,执行else语句;
j++;
else{
if(n==3) //当n等于3时,a[j]记录牌面i;
a[j]=i;
j++; //j自增1;
n++; //n自增1;
}
}while(n<=3); //当n<=3是继续do while ,否则,退出do while;
}
for(i=1;i<=26;i++){ //以原来的次序输出牌面;
printf("%c",a[i]>13? 'r':'b');
printf("%d ",a[i]>13? a[i]-13:a[i]);
if(i==13)
printf("\n");
}
printf("\n");
}
F. 魔术师的猜牌术VB 求VB编程
魔术师手中的牌原始顺序是这样安排的:
1 2 7 3 8 4 12 13 9 5 10 11
以下是代码:
Private Sub Command1_Click()
Dim a(13) As Integer
j = 1
For i = 1 To 13
n = 0
While n < i - 1
If j < 13 Then j = j + 1 Else j = 1
If a(j) = 0 Then n = n + 1
Wend
a(j) = i
Next i
For i = 1 To 13
Print a(i);
Next i
End Sub
G. 你好,你可以帮我编程一下魔术师的秘密吗用vb来编程的
Subxxx()
DimiAsInteger,nAsInteger,pAsInteger,mAsInteger
Dimarr(1To13)AsInteger
Dimbrr(1To54)AsBoolean
arr(1)=1
p=0'用来定位开始记牌的位置
Fori=1To13
n=0
m=1
DoWhilem<55
Ifp+m>54Thenp=0:m=1'当54张牌数完,重新回到第一张牌
Ifbrr(p+m)=FalseThen'判断这张牌是否是已经挑出来的牌,如果是已经挑出来的牌,则跳过
n=n+1'n用来数第几张牌
Ifn=iThen
arr(i)=p+m'定位每张黑桃i的位置
brr(p+m)=True'已经挑出来的牌,则标记为True
p=p+m'将定位变量p,定位到p+m
ExitDo'退出Do循环
EndIf
EndIf
m=m+1
Loop
Next
DimsAsString
s="牌号-"&"位置"&Chr(10)
Form=1To13
s=s&""&m&"-"&arr(m)&Chr(10)
Next
MsgBoxs
EndSub
答案是:
A 2 3 4 5 6 7 8 9 10 J Q K
1 3 6 10 1521 28 36 45 2 17 31 46
顺过来就是:A,10,2,3,4,5,J,6,7,Q,8,9,K
搜了一下,C语言写出来的好像是1,8什么的……
楼主自己用笨方法数一数吧, 我数出来跟我得出来的结果貌似一样!!!
H. 在一种室内互动游戏中,魔术师要每位观众心里想一个3位数abc(a.b.c分别是百位.十位和个位数字),
#include<stdio.h>
#include<windows.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
//函数的声明
void magician();
void decision();
void mainmenu();
void exitgame();
void hellp();
void playerchoice();
void mainPage()//主界面
{
int i;
printf("\t______vvvvvv______系统正在加载中,请稍等......______vvvvvv______\t\n");
printf("\t—__— zzzzzzzzzzz电脑不给力,请稍等一会......—__—zzzzzzzzzzzz\t\n");
for(i=0;i<80;i++)
{
printf("%%");
Sleep(200);
}
printf("\t\t\t—— 终于结束了╮(╯▽╰)╭\t\t\t\n");
system("CLS");
system("color 8B");
printf(" *****************************************************************\n");
printf(" *******************************************************************\n");
printf(" ** **\n");
printf(" ** **\n");
printf(" ** 第五组 **\n");
printf(" ** 成员:林可、王丽婕、张婷婷、许春雪、 **\n");
printf(" ** 裴月娥、钱鹏辰 **\n");
printf(" ** **\n");
printf(" ** **\n");
printf(" *******************************************************************\n");
printf(" *****************************************************************\n");
}
int a;
int b;
int c;
int sum;//计算的和值
int e;//三位数的值
void main ()//主函数
{
mainPage();
mainmenu();
}
/*acb+bca+bac+cab+cba+abc=sum-abc
222(a+b+c)=sum-abc
本代码的核心思想
*/
void mainmenu()//系统主菜单
{
int select;
while(1)
{
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%Main Menu%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Menu@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\t 1 退出\n");
printf("\t 2 进入游戏\n");
printf("\t 3 游戏帮助\n");
printf("请输入相应的数字,进入不同的模块: \n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
scanf("%d",&select);
getchar();
fflush(stdin);
if(select==1)
{
exitgame();
}
else if(select==2)
{
playerchoice();
}
else if(select==3)
{
hellp();
}
else
{
printf("选择非法,请重新输入进行再次选择\n");
}
}
}
void viewer()//玩家是观众
{
int sum;//键盘输入的和值
int e;//得出的三位数
int f;
int g;
int m;
printf("请输入得到的数:\n");
scanf("%d",&sum);
e=222-sum%222;
a=e/100;
b=(e/10)%10;
c=e%10;
g=a+b+c;
f=e+(222*g);
if (f==sum)
printf("%d\n",e);
else
{
if(sum%222==0)
{
m=(sum/222)/5;
e=222*m;
printf("%d\n",e);
}
else
{
e=e+222;
a=e/100;
b=(e/10)%10;
c=e%10;
f=e+(222*g);
printf("%d\n",e);
}
}
}
void playerchoice()//选择玩家的身份
{
int select;
printf(" 输入 1 你是魔术师 \n");
printf(" 输入 2 你是观众 \n");
printf("请输入相应的数字,进入不同的模块: \n");
scanf("%d",&select);
getchar();
fflush(stdin);
if(select==1)
{
magician();
}
else if(select==2)
{
viewer();
}
else
{
printf("选择非法,请重新输入进行再次选择\n");
}
}
void hellp()
{
system("CLS");
printf("$$$$$$$$$$$$$$$$$$欢 迎 寻 求 帮 助$$$$$$$$$$$$$$$$\n");
printf("\n");
printf("@@@@游戏规则:输入1,表示退出游戏 @@@\n");
printf("@@@@ 输入2,表示游戏系统设置 @@@\n");
printf("@@@@ 输入3,表示游戏帮助 @@@\n");
printf("@@@@ 输入4,表示游戏开始 @@@\n");
printf("输入2时,进行下一轮选择:\n");
printf(" 输入1 你是魔术师 \n");
printf(" 输入2 你是观众 \n");
printf("\n");
printf("!!!!!!!!!!!!游 戏 简 要 说 明!!!!!!!!!!!!!\n");
printf("\n");
printf(" 在一种室内互动游戏中,魔术师要每位观众心里想一个3位数abc(a.b.c分别是百位.十位\n");
printf("和个位数字),然后魔术师让观众心中记下acb bac bca cab cba 5个数以及这5个数的和值。\n");
printf("只要观众说出这个和值多少,则魔术师一定能猜出观众心里想的原数abc是多少。\n");
printf("\n");
printf("本游戏玩家自由选择所担任的职业,即魔术师或观众,根据提示完成游戏\n");
printf("$$$$$$$$$$$$$$$$$$结 束 帮 助$$$$$$$$$$$$$$$$$$$$$\n");
}
void exitgame() //退出
{
char select;
printf("你确定退出游戏吗?退出请输入Y或y,继续点任意键\n");
scanf(" %c",&select);
getchar();
fflush(stdin);
if(select=='Y'||select=='y')
{
printf("欢迎再来游戏\n");
exit(1);
}
else
{
return;
}
}
void magician()//玩家是魔术师
{
int l,f;
srand(time(0));
a=rand()%9+1;
b=rand()%10;
c=rand()%10;
e=100*a+10*b+c;
//acb+bac+bca+cab+cba=122a+212b+211c=f
f=122*a+212*b+221*c;
printf("%d\n",f);
printf("请输入你得到的三位数: \n");
scanf("%d",&l);
if (e==l)
printf("恭喜你,魔术成功了 \n");
else
printf("魔术失败了,下次努力\n");
}
I. 语言魔术的学好魔术的注意事项
一、每学一项新语言魔术,一定要做笔记,人的记忆力有限,虽然现在记得,但过了几天、几个月后还是会忘掉,所以一定要做笔记。而且语言魔术有些非常好记,但是如同编程框架一样很容易的让人傻瓜式的学习,流传……
二、独自练习语言魔术时不要只顾中文以及中文学的功底,把台词想好之后,与知识精巧巧妙结合着练习。
三、当有人向你学魔术的时候,首先要看他是只想知道这个魔术是怎么变的?也就是其语言魔术的实质核心。这时你可以先和他说我还不会教魔术然后想办法带离这个话题。
四、由于语言魔术非常让人容易傻瓜式流传,所以基本上没有学习到实质上的核心内容,语言魔术可以理解为以中文符号来汇编的一个程序框架
J. 魔术师的纸牌编程算法
我的理解是第1张是A,然后把第2张放到最后,然后第3张是2,然后把第4张放到最后,第5张放到最后,然后第6张是3,然后把7、8、9张依次放到最后,然后第8张是4……
是这样吧?
按照你说的话,牌由上到下的顺序是(T代表10):A825T3QJ9476K
c语言实现的话用倒推的思想应该会相对比较简单一些,你自己拿13张牌自己倒推着试试看,然后按照自己倒推的思路编程就会容易许多。
具体的代码就不给你编了,实现的时候可能多层循环比较麻烦,一步一步来就会轻松些,最好先画个流程图。