1. # ==C 語言==解題研究社-張峻瑞 ## [1加到n計算式](https://onlinegdb.com/2EIMiSipg) :::warning ``` #include <stdio.h> int main() { int i , sum = 0, n; printf("請輸入數字"); scanf("%d",&n); for ( i = 0 ; i <= n ; i++){ sum = sum + i; } printf("%d", sum); } ``` ::: ## [公因數與公倍數(非輾轉)](https://onlinegdb.com/Ol4CUgXkR) :::warning ``` #include <stdio.h> int main() { int num1 = 34, num2 = 10,num2_old,LCM;//num2_old:沒有改變的num2 num2_old = num2; while ( num2 != 1 )//num2會一直減少到1 { if (num1 % num2 == 0 & num2_old % num2 == 0){//num1被num2整除或原始的num2_old被num2整除代表此時的num2為最大公因數 printf("%d\n",num2); LCM = (num1*num2_old)/num2; printf("%d",LCM);//最大公因數為LCM break; } num2 = num2 -1; } } ``` ::: ## [閏年與平年](https://onlinegdb.com/oCUWg-lVj) :::warning ``` #include <stdio.h>//閏年的規則,每四年閏一次,但是每一百年不閏,遇到四百年還是要閏年 int main() { int year; printf("請輸入任一年份的數字"); scanf("%d",&year); if ( year % 400 == 0 ){ //除以400的餘數為0,則為閏年 printf ("閏年"); } else if ( year % 400 == 0 ){ //在除以100的餘數為0,則為平年 printf ("平年"); } else if ( year % 4 == 0 ){ //在除以4的餘數為0,則為閏年 printf ("閏年"); } else { printf("平年");//餘為平年 } } ``` ::: ## [輾轉相除法](https://onlinegdb.com/2PqswJT2J) :::warning ``` #include <stdio.h> int main() { int num1 , num2 , remainder,product,LCM; printf("請輸入兩個個數字\n"); scanf("%d\n%d",&num1,&num2);//輸入兩個數字以計算 product = num1 *num2;// num1乘num2= product while ( num2 != 0 ){//重複執行到( num2 不等於 0 ) remainder = num1 % num2; num1 = num2; num2 = remainder; } printf("最大公因數%d\n",num1); LCM = product /num1; printf("最小公倍數%d\n",LCM); return 0; } ``` ::: ## [質合數判別](https://onlinegdb.com/ge_xTL7w7e) :::warning ``` #include <stdio.h> int main() { int n, i = 2, is_prime = 1; scanf("%d" , &n);//提問用 while ( i < n) { if (n % i == 0 ){ is_prime = 0; printf("%d" , i ); } i++; } if (is_prime == 0){ printf("是合數");//顯示("是合數") }else printf("是質數");//顯示("是質數") } ``` ::: ## [while迴圈](https://onlinegdb.com/yIGwlntHbx) :::warning ``` #include <stdio.h> int main() { int i = 0, sum = 0; while (i <= 10 ){//重複以下動作 sum = sum + i; i++; } printf("%d\n" , sum ); } ``` ::: ## [兩光算命](https://onlinegdb.com/rzczwW2Nz) :::warning ``` #include <stdio.h> int main() { int m = 1 , d =5 ; int sum = ( m * 2 + d)%3;//sum = ( m * 2 + d)%3 if (sum == 0)//假如sum = 0 {printf("普通");}//顯示普通 if (sum == 1) {printf("吉");}//顯示吉 if (sum == 2) {printf("大吉");}//顯示大吉 } ``` ::: ## [一加到十](https://onlinegdb.com/JVd-ADWAz) :::warning ``` #include <stdio.h> int main() { int i , sum = 0, n; printf("請輸入數字"); scanf("%d",&n); for ( i = 0 ; i <= n ; i++){ sum = sum + i; } printf("%d", sum); } ``` ::: ## [等差數列](https://onlinegdb.com/RceYLB0Ni) :::warning ``` #include <stdio.h> int main() { int a [100]; printf("等差數列的首項是多少"); scanf("%d" , &a[0]); a [0] = 2 ; int d = 2 , i , n=4 , sum ; printf("等差數列的公差是多少"); scanf("%d",&d); printf("要查第幾項"); scanf ("%d",&n); for (i = 0 ; i < n ; i++){ a[i+1] = a[i] + d ; } printf("數列的第%d項是:%d\n", n,a[n-1]); for (i = 0 ; i < n; i++){ sum = sum +a[i]; } printf("數列的第1項加到第%d項的和是%d",n,sum); } ``` ::: ## [泡沫排序法](https://onlinegdb.com/0VsropbSZ) :::warning ``` #include <stdio.h> int main() { int n[9] = { 9, 8, 7, 6, 5, 4, 3, 2, 1 }; int i , j , temp; for( j = 0 ; j < 9-1 ; j++){ for ( i = 0; i < 9-1;i++){ if ( n[i] > n [i+1]){ temp = n[i]; n[i] = n[i+1]; n[i+1] = temp; } } } for( i = 0 ; i < ) printf("%d",n[]); } ``` ::: ## [猜數字](https://onlinegdb.com/_nQxnNvyu) :::warning ``` #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int answer ; int max = 100 ,smallest = 1 ,frequency = 0,correctanswer = 50; do { scanf("%d" ,&answer); if( answer % 1 == 0 , max > answer , smallest < answer){ if (correctanswer < answer){ printf("太大了\n"); max=answer; } else if (correctanswer > answer){ printf("太小了\n"); smallest=answer; } else if (correctanswer == answer){ printf("答對了\n"); } else {printf("輸入錯誤,請繼續輸入"); frequency + 1 ; } printf ("%d",smallest); printf ("-"); printf ("%d\n",max); } } while (answer != correctanswer); } ``` ::: ## [計算正方形面積](https://onlinegdb.com/njRFRxn94) :::warning ``` #include <stdio.h> int square(int x); int main() { int len ; square(4); printf ("%d",square(len)); } int square(int x){ return x * x ; } ``` ## [1A2B](https://onlinegdb.com/qU8ZfuKcU) :::warning ``` #include <stdio.h> int main() { int answer = 456, input , a, b, c, x, y, z, A = 0, B = 0; printf("請輸入數字\n"); while(scanf("%i",&input) != EOF){ a = answer / 100; b = answer / 10 % 10; c = answer % 10; x = input / 100; y = input / 10 % 10; z = input % 10; if(a == x && b == y && c == z){ printf("猜對了!"); break; } if(z == c) A++; if(y == b) A++; if(x == a) A++; if(z == b) B++; if(z == a) B++; if(y == c) B++; if(y == a) B++; if(x == c) B++; if(x == b) B++; printf("%iA%iB\n",A,B); } } ``` ::: ## [APCS(1)](https://onlinegdb.com/Fkq9dRhD0) :::warning ``` #include <stdio.h> int f(int n){ if (n<2){ return n; } else{ return(n+f(n/2)); } } int main() { printf f(10); } ``` ::: ## [APCS(2)](https://onlinegdb.com/EzYuChQiQ) :::warning ``` #include <stdio.h> void f(int x, int y){//void = 無回傳值 int tem = x; x = y; y = tem; } int main(){ int x = 2, y = 3; f(x,y); printf("%d",(x-y)*(x+y)/2);//%d=整數 return 0; } ``` ::: ## [APCS(3)](https://onlinegdb.com/Xy2eIbrFw) :::warning ``` #include <stdio.h> int main() { int k = 0; int m = 9; for (int i=1;i<=5; i=i+1){ for (int j=1; j <= k; j = j+1){ printf (" "); } for(int j=1; j<=m; j = j+1){ printf ("*"); } printf("\n"); k = k + 2; m = m - 2; } } ``` ::: ## [APCS(4)](https://onlinegdb.com/bSrthoaQQ) :::warning ``` #include <stdio.h> int main() { int i ,a[100],b[100]; for (i = 1; i <=100;i=i+1){ b[i] = i; } a[1]= 0; for (i= 1; i<=100;i=i+1){ a[i] = b[i]+a[i-1]; } printf("%i\n",a[50]-a[30]); } ``` ::: ## [APCS(5)](https://onlinegdb.com/u8i9OzWxr) :::warning ``` #include <stdio.h> int f (int n) { int sum= 0 ; if (n<2) { return 0 ; } for (int i=1; i<=n;i=i+1) { sum = sum + i ; } sum = sum + f(2*n/3); return sum; } int main(){ printf("%i",f(666)); return 0 ; } ``` ::: ## [APCS(6)](https://onlinegdb.com/yyjONL_gK) :::warning ``` #include <stdio.h> int a (int n , int m){ if (n < 10) { if(m<10) { return n + m; } else { return a(n,m - 2)+ m; } } else{ return a(n - 1,m) + n ; } } int main(){ printf("%i",a(13,15)); return 0; } ``` ::: ## [APCS(7)](https://onlinegdb.com/S9nqF5lMM) :::warning ``` #include <stdio.h> int f(int i); int main(){ printf("%d",f(10)); return 0; } int f(int i){ if (i>0) if((i/2)%2==0) return f(i-2)*i; else return f (i-2)*(-i); else return 1; } ``` ::: ## [APCS(8)](https://onlinegdb.com/nc_5Okx1B) :::warning ``` #include <stdio.h> void gcd(int num1, int num2) { if (num2 == 0) printf("%d" ,num1); else return gcd (num2,num1 % num2); } int main() { int num1 = 6; int num2 = 30; gcd(num1,num2); return 0; } ``` ::: ## [APCS(9)](https://onlinegdb.com/nc_5Okx1B) :::warning ``` #include <stdio.h> int f() { int p = 2 ; while (p <2000) { p = 2 * p; } return p ; } int main() { printf("%d",f()); return 0; } } ``` ::: ## [河內塔](https://onlinegdb.com/FW3F2obPM) :::warning ``` #include <stdio.h> void hanoi(int n,int A, int B, int C){ if ( n == 1 ){ printf("%d -> %d\n",A,C); } else{ hanoi(n-1,A,C,B); printf("%d -> %d\n",A,C); hanoi(n-1,B,A,C); } } int main() { int n ; int A =1; int B =2; int C =3; printf("請輸入要解的盤數"); scanf("%d", &n); hanoi(n, A, B, C); } ``` ::: ## [河內塔(英)](https://onlinegdb.com/uVbCmDkjC) :::warning ``` #include <stdio.h> void hanoi(int n , char A, char B, char C){ if ( n == 1 ){ printf("%c -> %c\n",A,C); } else{ hanoi(n-1,A,C,B); printf("%c -> %c\n",A,C); hanoi(n-1,B,A,C); } } int main() { int n ; char A ='A'; char B ='B'; char C ='C'; printf("請輸入要解的盤數"); scanf("%d", &n); hanoi(n, A, B, C); } ``` ::: ## [畫星星](https://onlinegdb.com/PeI6zdZ9y) :::warning ``` #include <stdio.h> int main() { int i , j ,k ,d = 0 , e =9; for(k = 0 ; k<5 ;k++){ for(i = 0 ; i<d ;i++){ printf (" "); } for (j = 0; j<e;j++ ){ printf ("*"); } printf("\n"); d = d + 1 ; e = e - 2 ; } } ``` ::: ## [找零機器](https://onlinegdb.com/OEN0mjbA6) :::warning ``` #include <stdio.h> int main() { int cash , cash100 , cash50 , cash10 , cash5, cash1 ; while(1){ scanf("%d" , &cash ); while (cash >= 100){ cash = cash -100; cash100 ++; } while (cash >= 50){ cash = cash -50; cash50 ++; } while (cash >= 10){ cash = cash -10; cash10 ++; } while (cash >= 5){ cash = cash -5; cash5 ++; } while (cash >= 1){ cash = cash -1; cash1 ++; } printf("100元%d個\n50元%d個\n10元%d個\n5元%d個\n1元%d個\n",cash100 , cash50 ,cash10 , cash5 , cash1 ); } } ``` ::: ## [亂數](https://onlinegdb.com/llJ39Y4Uw) :::warning ``` #include <stdio.h> #include <stdlib.h>/*亂數相關函數*/ #include <time.h>/*時間相關函數*/ int main() { // 設定亂數種子 srand(time(NULL)); // 產生亂數 int x = rand(); printf ("x = %d\n " , x); return 0 ; } /*int main() { //固定亂數種子 srand(5); int x = rand(); printf ("x = %d\n " , x); return 0 ; }*/ /*int main() { srand(time(NULL)); int min = 4 ; int max = 10 ; int x = rand ()% (max - min + 1) + min ; printf ("x = %d\n" , x); return 0 ; }*/ ``` ::: :::warning # ==心得== ## ++上完了C語言社團的課程,我覺得這真的非常非常的有趣:>真的非常推薦大家加入:>好東西要分享給大家:>完完全全不會無聊喔:>學弟妹要加入喔:> ## 開個玩笑,說真的...一開始我覺得這社團有些無聊,但自從慢慢地了解C語言的運作方式後,發現可以利用這些普普的小字母組成許多有趣又實用的程式...老實說參加這個社團真的很需要耐心去學習,許多程式都需要長時間的講解才能明白,不過假如你對程式有興趣又有耐心的話非常推薦這個社團喔OvOb \