第1章 程序設計入門
- 記錄總結
程序編譯與運行原理與過程
理解算法競賽程序三部曲:輸入、計算、輸出;記住算法競賽的目標及其對程序的要求;保持簡單(Keep It Simple and Stupid, KISS)
附錄A
黑盒測試
順序結構程序設計,分支結構程序設計
C99,C11(無gets)
C編譯器 gcc、visual c++系列、(無需編譯直接執行的c語言解釋器 Ch、TCC)
變量類型、聲明、輸入輸出格式(不匹配造成的結果、%03d不足3位補0)、編碼與運算、範圍
查文檔printf,輸出字符%d
數學函數使用方法與常用函數 <math.h>
邏輯表達式、運算符優先級、短路運算符
Pi的表示方式 <math.h>中的M_PI, ANSI C(C89)標準, gcc-ansi編譯嘗試
如何理解 a ^= b ^= a ^= b (^為異或)
- 相關問題與代碼
-
圓柱體表面積 (const 聲明常量、pi的表示)
1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 const double pi = acos(-1.0); 6 double r, h, s1, s2, s; 7 scanf("%lf%lf", &r, &h); 8 s1 = pi*r*r; 9 s2 = 2 * pi*r*h; 10 s = s1*2.0
View Code - 變量交換(三變量法、以下另一種方法不建議使用)
1 #include <stdio.h> 2 int main() 3 { 4 int a, b; 5 scanf("%d%d", &a, &b); 6 a = a + b;//適用與定義了加減法的數據類型 7 b = a - b;//異或代替加減法實現,簡寫為 a ^= b ^= a ^= b; 8 a = a - b;
View Code -
數據類型實驗
A1:11111*11111正確;6個1錯誤,為負數;9個1結果錯誤,為正數
A2:11111.0*11111.0正確;6個1正確;9個1結果接近正確,個位錯誤
A3:sqrt(x)返回浮點數,當x為負數返回-nan(ind)。
nan是"not a number"的縮寫,即計算結果不是個數。
例如:32位數實際指數128,數符1或0,指數域二進制1111 1111。尾數域等於非零。
ind 是 indeterminate 的縮寫,即無法確定是什麽。
對負數開平方,對負數取對數,0.0除以0.0,0.0乘無窮大∞, 無窮大∞除以無窮大∞等錯誤都會得到它。A4:1.0 / 0.0, 0.0 / 0.0
報錯error C2124: 被零除或對零求模
- 輸入格式實驗
B1 B2 B3 在scanf格式中插入空格、tab、回車可行
B4:在scanf格式輸入字符,輸出為負數
查文檔printf,輸出字符%d
- 習題
-
1-1平均數
1 #include <stdio.h> 2 int main() 3 { 4 int a, b, c; 5 scanf("%d%d%d", &a, &b, &c); 6 printf("%.3f\n", (a + b + c) / 3.0); 7 return 0; 8 }View Code
1-2溫度(攝氏溫度c = 5*(華氏溫度f-32)/9)
1 #include <stdio.h> 2 int main() 3 { 4 float f; 5 scanf("%f", &f); 6 printf("%.3f", 5 * (f - 32) / 9);//c=5*(f-32)/9 7 return 0; 8 }View Code
1-3連續和
1 #include <stdio.h> 2 int main() 3 { 4 int n, sum = 0; 5 scanf("%d", &n); 6 //for (int i = 1; i <= n; i++) 7 // sum += i; 8 //printf("%d\n", sum); 9 printf("%d\n", n*(n + 1) / 2); 10 return 0; 11 }View Code
1-4正弦和余弦(math,h中的sin、cos、pi)
1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 const double pi = acos(-1.0); 6 double n; 7 scanf("%lf", &n); 8 printf("%lf %lf\n", sin(pi*(n / 180)), cos(pi*(n / 180)));//double角度 9 return 0; 10 }View Code
1-5打折
1 #include <stdio.h> 2 int main() 3 { 4 float x; 5 scanf("%f", &x); 6 if (95 * x >= 300.0) printf("%.2f\n", 95 * x*0.85); 7 else printf("%.2f\n", 95 * x); 8 return 0; 9 }View Code
1-6三角形
1 #include <stdio.h> 2 int main() 3 { 4 int a[3], book = 1; 5 for (int i = 0; i < 3; i++) 6 scanf("%d", &a[i]); 7 for (int i = 0; i < 3; i++) 8 { 9 if (a[i % 3] + a[(i + 1) % 3]<a[(i + 2) % 3] || a[i % 3] - a[(i + 1) % 3]>a[(i + 2) % 3]) 10 { 11 book = 0; 12 break; 13 } 14 } 15 if (book) printf("yes\n"); 16 else printf("not a triangle\n"); 17 return 0; 18 }View Code
1-7年份(閏年概念)
1 #include <stdio.h> 2 int main() 3 { 4 int y, book = 0; 5 scanf("%d", &y); 6 if (y % 400 == 0) book = 1; 7 else if (y % 4 == 0 && y % 100 != 0) book = 1; 8 if (book) printf("yes\n"); 9 else printf("no\n"); 10 return; 11 }View Code
第1章 程序設計入門