有貓會放過任何一只到嘴的老鼠嗎?
有只貓抓了n(臨時輸入)只老鼠,它想考察一下老鼠的智商,就把老鼠圍成一圈,并從編號第一的老鼠開始數數(或計數),每數到3就把這只老鼠吃掉,然后又從下一只老鼠開始重新數數,這個游戲一直回圈進行直到只剩下最后一只老鼠,這只老鼠就被放生,請問如果你是這只聰明的老鼠,想要活下來,你應該編號到哪個位置。請編程求解。
這道題怎么編程
uj5u.com熱心網友回復:
哇哈哈貓捉老鼠
狐貍捉兔子
https://blog.csdn.net/qq_45861670/article/details/104069338
供參考~
uj5u.com熱心網友回復:
typedef struct _stuMouse{
_stuMouse* pNext;
int nNode;
}stuMouse;
int ncount = 0;
while(ncount <= 1)
{
printf("請輸入老鼠的個數(大于1):");
scanf("%d", &ncount);
}
stuMouse** pMouseArray = (stuMouse**)malloc(sizeof(stuMouse*)*ncount);
for(int i=0; i<ncount; i++)
{
pMouseArray[i] = (stuMouse*)malloc(sizeof(stuMouse));
}
for(int i=0; i<ncount-1; i++)
{
pMouseArray[i]->pNext = pMouseArray[i+1];
pMouseArray[i]->nNode = i+1;
}
pMouseArray[ncount-1]->pNext = pMouseArray[0];
pMouseArray[ncount-1]->nNode = ncount;
stuMouse* pPoint = pMouseArray[0];
stuMouse* pLast = NULL;
int nEat = 1;
while(pPoint->pNext != pPoint)
{
nEat++;
pLast = pPoint;
pPoint = pPoint->pNext;
if (nEat == 3)
{
printf("編號為%d的老鼠被吃了\n", pPoint->nNode);
pLast->pNext = pPoint->pNext;
pPoint = pPoint->pNext;
nEat = 1;
}
}
printf("***^_^***編號為%d的老鼠活了***^_^***\n", pPoint->nNode);
for(int i=0; i<ncount; i++)
{
free(pMouseArray[i]);
}
free(pMouseArray);
uj5u.com熱心網友回復:
非常感謝




轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/117310.html
標籤:C語言
下一篇:c++檔案輸入輸出
