# C語言教學 Part2 : 條件式&基本架構 ## :memo:基本介紹 https://www.codejudger.com/ 帳號:aimee01@chsc.tw 密碼:19911223 ### Step 1: 基礎認識 #### 數學模組 在C語言中,要呼叫數學模組,會以#include來表示: ```C=1 #include<math.h> ``` 若要用數學模組中的「次方」,會使用pow,若要開根號,會使用sprt的功能。 ```C=1 #include<stdio.h> #include<math.h> int main(){ int a=2,b=4,c; c=pow(a,2); //pow(a,2)為a的兩次方 printf("%d\n",c); c=pow(a,3); //pow(a,3)為a的三次方 printf("%d\n",c); c=pow(b,a); //pow(a,b)為a的b次方 printf("%d\n",c); c=sqrt(a);// c為a的開根號 printf("%d\n",c); c=sqrt(a+b);//c為a+b的開根號 printf("%d\n",c); return 0; } ``` > 4 8 16 1 2 TQC 106 請撰寫一程式,讓使用者輸入四個整數,依序分別為點A(x1,y1)及點 B(x2,y2)的座標值,接著計算兩點距離並輸出(四捨五入至小數點後第二位)。 兩點距離公式:=${\sqrt{(x2-x1)^2+(y2-y1)^2}}.$ 輸入說明: 四個整數 輸出說明: 計算兩點座標距離(四捨五入至小數點後第二位) 範例輸入: > 3 > 2 > 4 > -6 範例輸出: > 8.06 參考程式碼: ```C=1 #include<stdio.h> #include<math.h> int main(){ int x1,y1,x2,y2,pow1,pow2; float sqrt1; scanf("%d",&x1); scanf("%d",&y1); scanf("%d",&x2); scanf("%d",&y2); pow1=pow(x2-x1,2); pow2=pow(y2-y1,2); sqrt1=sqrt(pow1+pow2); printf("%.2f",sqrt1); return 0; } ``` --- 在C語言的程式中,格式化輸出與python一樣 TQC 107 設計說明: 1.請撰寫一程式,讓使用者輸入六個整數,將每三個整數列印在同一列。 2.為了輸出美觀,每個整數給予10個欄位寬,並分別輸出靠右與靠左對齊。 輸入說明: 六個整數 輸出說明: 每三個整數輸出在同一列共分兩列,且每個整數給予10個欄位寬,分別輸出靠右與靠左對齊 範例輸入: > 10 100 100000 100000 100 10 參考程式碼: ```c=1 #include<stdio.h> int main(){ int a,b,c,d,e,f; scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); scanf("%d",&d); scanf("%d",&e); scanf("%d",&f); printf("%10d %10d %10d\n",a,b,c); printf("%10d %10d %10d\n",d,e,f); printf("%-10d %-10d %-10d\n",a,b,c); printf("%-10d %-10d %-10d\n",d,e,f); return 0; } ``` TQC 108 > 請撰寫一程式,讓使用者輸入一整數為圓形的直徑,分別輸出直徑、半徑(四捨五入至小數點後第二位)及面積(四捨五入至小數點後第四位),欄位寬度皆為**10個字元且靠左對齊**。 > 提示:圓周率請使用3.1415進行運算。 輸入說明 一個整數 輸出說明: 圓的直徑、半徑(四捨五入至小數點後第二位)、面積(四捨五入至小數點後第四位) 範例輸入: > 90 範例輸出: > 90 > 45.00 > 6361.5375 ```c=1 #include<stdio.h> int main(){ int a; scanf("%d",&a); printf("%-10d\n",a); printf("%-10.2f\n",a/2.0); printf("%-10.4f",(a/2.0)*(a/2.0)*3.1415); return 0; } ``` ### Step 2: 條件式 在C語言中,條件是有有兩種用法: #### if條件式 C語言中的if與python類似,是以大括號所包住,程式範例如下 ```c=1 #include<stdio.h> int main(){ int a; scanf("%d",&a); if (a>0){ printf("大於0"); } else if (a<0){ printf("小於0"); } else{ printf("等於0"); } return 0; } ``` 109 設計說明; 請撰寫一程式,讓使用者輸入分數,判斷此分數是否及格(及格分數為60分以上),若及格,則輸出「pass」;若不及格,則輸出「fail」,再判斷此分數為奇數或偶數,若為奇數,則輸出「odd」;若為偶數,則輸出「even」,若輸入的分數不在0~100中,則輸出「error」。 輸入說明 一個整數 輸出說明 該分數pass或fail與該數為odd或even;若分數不在0~100中,輸出error 範例輸入1 90 範例輸出1 pass even 範例輸入2 59 範例輸出2 fail odd 範例輸入3 101 範例輸出3 error 題意說明: 先判斷pass fail,若不符合則印出error, 再去判斷偶數基數 參考程式: ```c=1 #include<stdio.h> int main(){ int x; scanf("%d",&x); if (60<=x&&x<=100){ //如果大於60且小於100就印出pass printf("pass\n"); if (x%2==0){ //如果是偶數就印出even printf("even"); } else{ printf("odd"); } } else if (0<=x&&60>x){ //如果大於0且小於60就印出fail printf("fail\n"); if (x%2==0){ printf("even"); } else{ printf("odd"); } } else{ //前兩個都不符合 printf("error"); } return 0; } ``` 110 題目說明: 1.請撰寫一程式,讓使用者輸入三個整數a、b、c,並依序輸出(2)~(4)。 2.若a大於等於60且小於100則輸出1,否則輸出0。 3.計算b+1再除以10的值,四捨五入至小數點後第二位。 4.若a大於等於c,則輸出a,否則輸出c。 輸入說明 三個整數 輸出說明 依序輸出設計說明2~4 輸入輸出範例 範例輸入 70 100 60 範例輸出 1 10.10 70 題意說明: 按照上方題意輸出 ```c=1 #include<stdio.h> int main(){ int a,b,c; float d; scanf("%d",&a); //1. scanf("%d",&b); //1. scanf("%d",&c); //1. if (a>=60&&a<100){ //2. printf("1\n"); } else{ printf("0\n"); } d=(b+1)/10.0; //3. printf("%.2f\n",d); if (a>=c){ //4. printf("%d\n",a); } else{ printf("%d\n",c); } return 0; } ``` 自行練習:201 202 203