2007年9月15日 星期六

C 程式設計作業五,使用函數:解題


/* C Programming, Project 5 */
/* Author: 施佑達 A9228450 */

#include <stdio.h>
#include <stdlib.h>

void power_off(int z){
int i,x,y,a=1;
int area[17]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
for(i=1;i<=17;i++){ //一共停17次,每次區域皆不一樣
printf("%d, ",a);
area[a]=1;
for(x=1;x<=z;x++){ //計算未停過的區域
a=a+1;
for(y=1;y<=17;y++){ //計算已停過電的區域
if (area[a]==1)
a=a+1;
if (a==18)
a = 1;
}
}
}
}

int main(){
int b;
for (b=5;b<=8;b++){ //5-8的方法
printf("%d的停電順序為:",b);
power_off(b);
printf("\n");
}
system("pause");
return 0;
}

作業五題目
回到首頁

3 則留言:

匿名 提到...

問題:
1.為何程式中a沒有等於0的時候,因為陣列只宣告area[17],也就是只有0~16可放1,那執行結果應該只會有16個數字,怎麼會有17個數字?

請大大幫忙解答,謝謝

匿名 提到...

陣列area是不是該宣告成19啊??依程式寫法 area[0]不會讀到,a=17 會超出陣列....

321 提到...

請問只要區域不重複就算是符合答案要求嗎?
我利用超過17用減法的方式寫出來但不確定對不對
可以幫我檢查看看嗎?

#include

int powerOff[17];
int power_off(int n);

int main()
{

power_off(5);
power_off(6);
power_off(7);
power_off(8);

return 0;
}

int power_off(int n){
int arr_n = 0;
int i = 1;
int count=0;
for(arr_n; arr_n < 17; arr_n++){
powerOff[arr_n] = i;
i+=n;
if(i > 17){
i -= 17;
}
//printf("powerOff[%d] = %d\n" ,arr_n,i);
}


printf("powerOff= {");
for(int i = 0; i<17; i++){
printf("%d, ",powerOff[i]);
}
printf("}\n");
return 0;
}