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