2026 I2P2 TATime

聽說這裡要有一個副標題

Trivia

主要是我怕我忘記講

TA Time

# PRESENTING CODE
  • 每週四的 18:40 開始到我講完,應該會在 1 ~ 1.5 小時上下
  • 主要是講解作業題,偶而(不保證)提一下考試題

Online Judge

# PRESENTING CODE
  • 140.114.85.195
  • 帳號理應創建好了
  • 有修陳煥宗程設一者,帳號沿用
  • 新加入者,帳密都是 ee-class 上的學號
  • 作業出在 Contest 中,無需繳交,但推薦做一下

VSCode & Settings

# PRESENTING CODE
  • Windows:
  • 安裝 VSCode 後,安裝 C/C++ Extension 方便你一鍵編譯
  • 下載 MinGW
  • 把 MinGW 的 bin\ 加入環境變數
  • Mac:
  • 安裝 VSCode 後,安裝 C/C++ Extension 方便你一鍵編譯
  • 在 Terminal 打 xcode-select --install

Compile&Run on Terminal

# PRESENTING CODE
  • 假設現在你寫了一份 duck.c 存在 C:\Users
  • 先用 cd 移動過去,否則 Terminal 讀不到
cd C:\Users
  • 使用 gcc 這個關鍵字來一口氣完成 Preprocess, Complie, Assemble, Linking
  • 然後用 -o 這個 flag 來指定輸出檔
gcc duck.c -o duck
誒 gcc 你拿著 duck.c 去把該做的做一做
最後產生能跑的東西後,命名為 duck 存在原地

Compile&Run on Terminal

# PRESENTING CODE
gcc duck.c -o duck
誒 gcc 你拿著 duck.c 去把該做的做一做
最後產生能跑的東西後,命名為 duck 存在原地
  • Windows 執行檔的副檔名會是 .exe,Mac 則為 .elf
  • 產生完執行檔後,直接打那個執行檔的名稱來 Run,可以省略副檔名
./duck

Compile&Run on Terminal

# PRESENTING CODE
  • 和 -o 相同,這類用減號開頭的關鍵字稱為 flag,用來操控指令細節
Flag意義
-Wall
-Wextra
-Wpedantic

編譯過程中,把遇到且的 warning 印出來
-I告訴系統你的標頭檔可能放在哪裡
-g程式錯誤時,精確輸出來自哪一份檔案的哪一行
-O3套用最極致的效能優化,有機會導致不穩定
-std=c17套用 C17 這個 ISO 語言標準

是不用特別去記,而且這明顯超範圍了

Week.1

2026.09.10

# PRESENTING CODE
  • 給你浮點數 \(x, y\) 與整數 \(z\),輸出 \(x \times y\) 處理到小數點後第 z 位的結果
  • C 的浮點數會有精度問題,float 大概只能撐到小數點後 6~7 位就會失準
  • 通常題目都用 double 就好,他可以撐到小數點後 16 位左右
  • 例如 printf("%.2f", d) 代表"輸出一個叫 d 的 double,處理到小數點後 2 位"
  • 實際上,這個"處理"是四捨六入五成雙
  • printf("%.*f", z, d) :如果你不確定要處理到第幾位,就用 * 佔位
# PRESENTING CODE
  • 然後就照做,堆
#include <stdio.h>

int main (){
	double a, b;
	int z;
	scanf("%lf %lf %d", &a, &b, &z);
	printf("%.*f\n", z, a*b);
}
# PRESENTING CODE
  • 給你兩個浮點數 \(x, y\),輸出他們相乘後處理至小數點後第 4 位的結果
  • 使用 double 可以省去 99% 的煩惱
#include <stdio.h>

int main (){
	double a, b;
	scanf("%lf %lf", &a, &b);
	printf("%.4f", a*b);
}
  • 因為你是用 %.4f,所以它會自動幫你補零!
# PRESENTING CODE
  • 如果你真的想知道,它本來是預期你會這樣寫:
#include <stdio.h>

int main(){
  int a, b, c, d, output;
  scanf("%d.%d %d.%d", &a, &b , &c , &d);
  output = (100*a + b) * (100*c + d); // 全部轉成整數處理
  printf("%d.%04d\n", output/10000, output%10000);
}
  • 整數才會需要寫 "%04d" 來讓它補零到第四位
Made with Slides.com