1. 程式人生 > >第1章 程序設計入門

第1章 程序設計入門

相關 tcc 使用 pri 實現 std c89 什麽 closed

  • 記錄總結

    程序編譯與運行原理與過程

    理解算法競賽程序三部曲:輸入、計算、輸出;記住算法競賽的目標及其對程序的要求;保持簡單(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 (^為異或)

  • 相關問題與代碼
    1. 圓柱體表面積 (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
      + s2; 11 printf("Area = %.3f\n", s); 12 return 0; 13 }
      View Code
    2. 變量交換(三變量法、以下另一種方法不建議使用) 技術分享
       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;
      
      9 printf("%d %d\n", a, b); 10 return 0; 11 }
      View Code
    3. 數據類型實驗

      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: 被零除或對零求模

    4. 輸入格式實驗

      B1 B2 B3 在scanf格式中插入空格、tab、回車可行

      B4:在scanf格式輸入字符,輸出為負數

      查文檔printf,輸出字符%d

    5. 習題

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章 程序設計入門