編程變魔術
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張牌自己倒推著試試看,然後按照自己倒推的思路編程就會容易許多。
具體的代碼就不給你編了,實現的時候可能多層循環比較麻煩,一步一步來就會輕鬆些,最好先畫個流程圖。