問題描述:
10個人圍成壹圈,編號依次從1到10.從編號為1的人開始從1到3報數,凡報數是3的人退出圈子.編寫程序輸出依次出列的人的編號.(用選擇,循環語句以及數組知識編寫)
解析:
新手當然要照顧了 所以壹個代碼壹個代碼的給妳加註釋。。
看明白了最好自己在做壹邊
這題有很多做法 給妳壹個最好理解的例子吧 但是這個代碼的效率。。。。。
代碼如下:
#include <stdio.h>/*頭文件*/
#define M 10 /*宏定義 可直接改變圈的大小*/
#define N 3 /*可定義 從1數到 幾 退出這個圈子*/
void main()/*主函數*/
{
int a[M];/*定義數組*/
int i;/*用做循環等*/
int x = 1; /*數到幾*/
int y = 0;/*最近M次循環裏有多少個人已經出去這個圈*/
int k = 1;/*while的開關變量*/
for(i=0; i<M; i++)/*給數組賦值*/
{
a[i] = i+1;
}
while(k)
{
for(i=0; i<M; i++)/*M個為壹組按照下標過濾*/
{
if(a[i] == 0)/*判斷這個a[i]位置上的人是否已經出圈*/
{
y++;/*如果出圈變量加壹*/
continue;/*退出本次循環*/
}
if(x == N)/*a[i]上的人沒有出圈 而且正好數到N*/
{
printf("%d ",a[i]);/*顯示這個人的編號*/
a[i] = 0;/*用0代替 代表已經出圈*/
x = 1;/*數 數重新從1 開始*/
}
else/*a[i]上的人沒有出圈 但還沒有數到N*/
{
x++;/*繼續數下壹個數*/
}
}
if(y == M)/*如果M個為壹組全都已經出圈 代表圈裏已經沒有人了*/
{
k = 0;/*退出while循環程序結束*/
}
else/*圈裏還有人*/
{
y = 0;/*把y置0待下次for循環時重新計數*/
}
}
printf("\n");/*可有可無*/
getch();/*可有可無*/
}
結果為
3 6 9 2 7 1 8 5 10 4
妳可以更改程序中的M N的數字來改變要求。
多做做題有好處 ,祝妳快點進步。!
由於百度對對齊的處理非常差 所以妳可以到這裏看代碼
bababian/photozoom.sl?pictureid=B16AE5B1739602D1F2A716DB4EA83D52DT&size=6&viewID=DB4A5B6DABA0D***********D07C8135UR
如果看不清 請右鍵 另存後在看 。
百度 老巖 gabmyd@126