唉…計程作業寫不出來
於是發憤去寫政大資管的題目
很簡單…就是寫出來一個猜數字的程式
覺得蠻有啟發性的
比我們的開檔關檔好玩多了
…我認為可以建議蔡老師改變一下作業的方向
以下是原始碼…大家參考一下吧
不吝賜教^^
備註:以下有些註解是寫給學伴看的,大家裝做沒看到就好了^^
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int ans[4],guess[4],a,b,i,j,k;
srand(time(NULL)); //使系統產生一亂數,有問題的話查函式庫
ans[0]=rand()%10; //以下是一個數一個數地檢查,讓四個數字不能重複
do {
ans[1]=rand()%10;
}while (ans[0]==ans[1]);
do {
ans[2]=rand()%10;
}while (ans[0]==ans[2] || ans[1]==ans[2]);
do {
ans[3]=rand()%10;
}while (ans[0]==ans[3] || ans[1]==ans[3] || ans[2]==ans[3]);
for(i=0;i<4;i++) //這是答案,要交的時候可以把這段刪掉^^
{
printf("%d\n",ans[i]);
}
k=1;
do{
printf("please input a 4 digit number (0~9) with no repeat (seperated by space bar)\n");
for(i=0;i<4;i++){ //輸入數字,用空白鍵隔開
scanf("%d",&guess[i]);
}
if(guess[0]==guess[1] || guess[0]==guess[2] || guess[0]==guess[3]//如有數字重複,跳出程式
|| guess[1]==guess[2] || guess[1]==guess[3] || guess[2]==guess[3])//有點爆力,但不知怎麼解決:(
{
printf("\nthe number should be with no repeat, please try again\n");
exit(1);
}
a=0;
b=0;
for(j=0;j<4;j++)
{
for(i=0;i<4;i++)
{
if(ans[i]==guess[i]) //因為經過兩個for迴圈,所以產生之a值等於4*4
a++; //所以下面輸出時要用a/4才行^^
else if(ans[j]==guess[i])
b++;
}
}
if((a/4)==4)
{
printf("excellent !! you got it ^^\n");
printf("you took %d times to solve it!!\n",k);
exit(1);
}
else
printf("the result is %d A %d B,guess again\n",a/4,b);
k++;
if(k>=10) //假如玩超過十次,就狠狠地罵他^^
{
printf("Are you nuts, go to hell\n");
exit(1);
}
}while((a/4)!=4); //只要a/4不等於4就繼續跑
}
--
※ 發信站: 批踢踢實業坊(ptt.twbbs.org)
◆ From: h62.s82.ts30.hi