各位可能在初學C語言的時候都有寫過猜拳游戲。但在寫猜拳的函數時,避免不了會使用循環。
當函數被套在一個循環中的時候,你的計分變量可能就會被重置為函數體裡的初始值。那麼怎麼解決這個問題?
其實很簡單,你需要在循環體中加入一個累加變量,從而使得函數體的單循環計分通過main函數裡的循環成為最後的總積分,並且由此來判斷最終你的積分和輸贏。
以下是我寫的部分代碼 ,歡迎指正!
1.函數體部分
int compare(int x,int y){ int j = 0;//函數外的每次循環會使得j的值初始化 if(x<3&&x>0){ if(y-x==0){ printf("此次猜拳兩人打成平手!"); } if(y-x==1||x-y==1){ if(x>y){ printf("此次猜拳你贏了!加一分!"); j++; } else{ printf("此次猜拳電腦贏了!減一分!"); j--; } } if(y-x==2||x-y==2){ if(x>y){ printf("此次猜拳電腦贏了!減一分!"); j--; } else{ printf("此次猜拳你贏了!加一分!"); j++; } } } else{ printf("您輸入錯誤!\n"); } return j;//返回值在每次主函數循環中會初始化 }
2.main主體
for(i=0;i<5;i++){ printf("\n"); printf("請輸入您的出拳!"); scanf("%d",&x); y = rand()%3; printf("電腦出拳為:%d\n",y); ary[i] = compare(x,y); sum += ary[i];//用sum變量很容易解決了計分變量的初始化問題 }