Linuxc基礎 十
阿新 • • 發佈:2018-11-30
今天做了老師給的題目有幾道題很有意思。
程式碼
程式碼題目:有n個人圍成一圈,順序排號,從第一個開始報數(從1到3報數),凡報到3的人退出圈子,問最後最後留下的是原來第幾號的那位.
void quanzi(int *pa,int n) { int i,b=0,c; c=n; for(i=0;i<n;i++) { pa[i]=i+1; } for(i=0;;i++) { if(i==n) i=0; if(pa[i]!=0) b++; else continue; if(b%3==0) { pa[i]=0; c--; } if(c==1) break; } for(i=0;i<n;i++) { if(pa[i]!=0) printf("%d\n",pa[i]); } } int main2() { int a[100]; int n; printf("qing shu ru: "); scanf("%d",&n); quanzi(a,n); }
程式碼題目:一個數如果恰好等於它的因子之和,這個數被成為”完數”,例如:6=1+2+3.請程式設計找出1000以內的完數
void yinzi(int n,int i) { int sum; for(n=2;n<1000;n++) { sum=1; for(i=2;i<n;i++) { if(n%i==0) { sum+=i; } } if(sum==n) { printf("%d its factors are: ",n); for(i=1;i<n;i++) { if(n%i==0) { printf("%d",i); } } printf("\n"); } } } int main1() { int n; int i; yinzi(n,i); return 0; }
總結
這兩題是開頭的兩題我感覺很有意思,解題的思路有很多。這兩題我用了很長的時間去想解題的思路,然後再結合網上寫程式的步驟才寫出了這兩題。我感覺我有的時候思路是有了但是不會寫這個程式,這就讓我很煩惱,但經過輔導的建議之後,我覺的明天多打一些程式是必要的。