# 測驗時間

# 第一回

  1. 一行程式碼中,如果連續出現了兩個分號,編譯就會錯誤

  2. C++ 中的每一條語句後面都一定要加分號

  3. C++ 中的變數名稱只能用一個字母表示。

  4. 編寫 C++ 程式的一般步驟依次是

    • 編譯、調試、編輯、運行
    • 編輯、調試、編譯、運行
    • 編輯、編譯、連結、運行
    • 編譯、編輯、連結、運行
  5. 下列哪行程式碼可使 "Hello world" 這句話出現在電腦螢幕上?

    • #include<iostream>
    • using namespace std;
    • cout<<"Hello world";
    • return 0;
  6. 下列哪個不是 C++ 合法的標識符?

    • int_stu
    • _2020
    • _ZZZrn
    • @gmail
  7. 下列何者不是 C++ 關鍵字?

    • distance
    • int
    • using
    • return
  8. C++ 的縮排會影響編譯是否成功

  9. 為了能夠方便利用每個字元,取名字的時候直接從 a 開始取

  10. 縮排風格的不同,對編譯而言沒有影響

  11. 下列何者為 C++ 的單行註解?

    • <!-- -->
    • //
    • #
    • /* */
  12. 遇到編譯錯誤 (Bug) 時,我們該如何面對它

    • 將電腦重新開機,祈求它再試正常
    • 根據報錯訊息,逐步 Debug
    • 直接交給別人檢查
    • 直接放棄,不寫了

# 第二回

  1. 下列何者為 C++ 合法的字元?

    • "\0"
    • '054'
    • '\x89'
    • '\092'
  2. 32 位元系統中,C++ 的 int 型數據佔的空間一般為

    • 2
    • 4
    • 8
    • 32
  3. 下列敘述何者錯誤?

    • 變數宣告時,一定要給變數一個初值
    • 十進制、八進制、十六進制,且沒有小數點,都是整數
    • 布林值存放的值僅有 1 和 0
    • ' ' 的 ASCII 碼值不為 0
  4. const 宣告常數時,一定要設定初值。

  5. #define 的使用可以在任何位置

# 第三回

  1. n=10i=4 ,則執行指定運算 n=n%(i-1) 後,n 的值是

    • 0
    • 1
    • 2
    • 3
  2. 遞增、遞減運算可以用於變數上,也可以用於常數及表達式上。

  3. 下面哪一項 C++ 表達式不能正確表示數學關係 a<x<=b

    • a<x&&x<=b
    • x<=b&& a<x
    • !(a>=x)&&!(x>b)
    • a<x<=b
  4. 若有 a=1b=2 ,则表達式 a+1==b 的值為

    • 0
    • 1
    • 2
    • 3
  5. 在位運算中,操作數每右移一位,其结果相當於

    • 操作數乘以 2
    • 操作數除以 2
    • 操作數乘以 4
    • 操作數除以 4
  6. n 元運算子的含意是

    • 對 n 個數據進行操作
    • 對 n 個數據進行加法
    • 對 n 個類型進行整合
    • 對 n 個類型進行轉換
  7. 若有 a=2b=4c=5 ,則表達式 a>b?a:b>c?a:c 的值為

    • 0
    • 2
    • 4
    • 5
  8. 不合法的指定語句是

    • n=(i=2,++i);
    • j++;
    • ++(i+1);
    • x=j>0;
  9. 有一表達式: 19/3*sqrt(4.0)/5 ,則該表達式的資料型態為

    • int
    • float
    • double
    • 不一定

# 來個驗收考題吧

  1. 下列的變數皆以正確宣告為 int,下列選項為不正確賦值的是
    • a=b+c=1
    • k = I == 1
    • a=1,b=2,c=3,k=4
    • n1 = n2 = n3 = 1
  2. i=6 , k=0 ,下列各語句,運算結果為 k=7 的是
    • k = ++i+k
    • k = k+++i
    • k = ++k+(++i)
    • k = i++++k
  3. 下列不合法的變數名為
    • -student
    • _student
    • student_name
    • student0
  4. int x = 3,y = 4,z = 5; ,則值為的 0 是
    • y%z>=y-z
    • x>y
    • x!=y+z>y-z
    • x<=y+1
  5. 設 x,y,z 為整數,下列各式中,運算結果與 x=y=24 的結果一樣的為
    • x=y=(z=8,4*6)
    • x = y = z = 8,4*6
    • x - (y=z=8),4*6
    • x =(y=z=8,4*6)
  6. a=6,b=5 時,語句 cout<<(a<=7 && a+b>8)<<endl; 的值為
    • 0
    • false
    • true
    • 1

# 簡單的上機一下

# 題目 1. 求商和餘數

  • 題目內容
    輸入兩個正整數,求他們的商和餘數。

  • 輸入格式
    兩行正整數,有空格隔開

  • 輸出格式
    商和餘數,用空格隔開

  • 輸入示例
    18 10

  • 輸出示例
    1 8

# 題解程式碼

#include <iostream>
using namespace std;
int main()
{
	int a, b;
	cin>>a>>b;
	cout<<a/b<<' '<<a%b<<endl;
	return 0;
}

# 題目 2. 溫度轉換

  • 題目內容
    輸入華氏溫度,用下列公式將其轉換為攝氏溫度並輸出。
    C=5/9(F32)C=5/9*(F-32)

  • 輸入格式
    任一實數

  • 輸出格式
    轉換後的攝氏溫度,實數

  • 輸入示例
    80

  • 輸出示例
    26.6667

# 題解程式碼

#include <iostream>
using namespace std;
int main()
{
	double F, C;
	cin>>F;
	C = 5.0/9*(F-32);
	cout<<C<<endl; 
	return 0;
}

# 題目 3. 計算平均分取整

  • 題目內容
    計算 7 個數字的平均數,要四捨五入,取整數
  • 輸入格式
    7 個 [0,100] 內的整數,用空格隔開
  • 輸出格式
    一個整數,是四捨五入的平均分
  • 輸入示例
    70 70 70 70 70 70 73
  • 輸出示例
    70

# 題解程式碼

#include <iostream>
using namespace std;
int main()
{
	int a, b, c, d, e, f, g;
	cin>>a>>b>>c>>d>>e>>f>>g;
	cout<<int(((a+b+c+d+e+f+g)/7.0)+0.5)<<endl;
	return 0;
}

# 題目 4. 求過平面上兩點的斜率

  • 題目內容
    寫一個程式,輸入平面上的兩個點座標,求過這兩點的直線斜率 (設斜率不為無窮)

  • 輸入格式
    兩行數據,實數。第一行為 x1,y1,第二行為 x2,y2,數據間有空格隔開

  • 輸出格式
    一個實數,表示斜率

  • 輸入示例
    1 1
    2 2

  • 輸出示例
    1

# 題解程式碼

#include <iostream>
using namespace std;
int main()
{
	double x1 = 0, y1 = 0;
	double x2 = 0, y2 = 0;
	cin>>x1>>y1;
	cin>>x2>>y2;
	cout<<(y2-y1)/(x2-x1)<<endl;
	return 0;
}

# 題目 5. 求過平面上兩點的距離

  • 題目內容
    寫一個程式,輸入平面上的兩個點座標,求這兩點之間的距離

  • 輸入格式
    兩行數據,實數。第一行為 x1,y1,第二行為 x2,y2,數據間有空格隔開

  • 輸出格式
    一個實數,表示距離

  • 輸入示例
    1 1
    2 2

  • 輸出示例
    1.41421

# 題解程式碼

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	double x1 = 0, y1 = 0;
	double x2 = 0, y2 = 0;
	double distance;
	cin>>x1>>y1;
	cin>>x2>>y2;
	distance=(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);
	distance=sqrt(distance);
	cout<<distance<<endl;
	return 0;
}

# 題目 6. 找零錢

  • 題目內容
    為顧客找零錢時,希望選用的錢幣最少。
    設零錢的面值有 50 元、10 元、5 元、1 元。
    你的目標是輸出各面值的零錢個數。

  • 輸入格式
    一個小於 100 的正整數

  • 輸出格式
    4 個整數,數據之間用一個空格隔開

  • 輸入示例
    73

  • 輸出示例
    1 2 0 3

# 題解程式碼

#include <iostream>
using namespace std;
int main()
{
	int n, r, n50, n10, n5, n1;
	cin>>n;
	n50 = n / 50;
	n10 = (r = r % 20) / 10;
	n5 = (r = r % 10) / 5;
	n1 = (r = r % 5) / 1;
	cout<<n50<<' '<<n10<<' '<<n5<<' '<<n1<<endl; 
	return 0;
}

# 題目 7. 判斷數字 (不能用 if)

  • 題目內容
    寫一個程式,輸入一個字元,判斷其是否為數字。是輸出 1,否則輸出 0。

  • 輸入格式
    一個字元

  • 輸出格式
    1 或 0

  • 輸入示例 1
    5

  • 輸出示例 1
    1

  • 輸入示例 2
    z

  • 輸出示例 2
    0

# 題解程式碼

#include <iostream>
using namespace std;
int main()
{
	char c;
	cin>>c;
	(c>='0' && c<='9') ? cout<<1 : cout<<0;
	return 0;
}

# 給喜歡挑戰的你

# 題目 1. e 的近似值

  • 題目內容
    輸入 n,計算y=(1+1/n)ny=(1+1/n)^n 的值
  • 輸入格式
    輸入整數 n
  • 輸出格式
    輸出 y 的值
  • 輸入示例
    100
  • 輸出示例
    2.70481

# 題解程式碼

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int n;
	cin>>n;
	cout<<pow((1+1.0/n),n)<<endl; // 1.0 而不是 1/n 的目的是强制 double
	return 0;
}

# 題目 2. 加密 (不能用 if 和 string)

  • 題目內容
    輸入 4 字元的單字 (小寫),將每個字母轉換為其在字母表的序號 (00~25)
    輸出 (不夠兩位的前面補 0)

  • 輸入格式
    連續四個小寫字母,表示為一個 4 字母單字

  • 輸出格式
    8 個 0~9 的數字,中間無空格

  • 輸入示例
    atom

  • 輸出示例
    00191412

# 題解程式碼

#include <iostream>
using namespace std;
int main()
{
	char c[4];
	cin>>c;
	int n = c[0] - 'a';
	n < 10 ? cout<<'0'<<n : cout<<n;
	n = c[1] - 'a';
	n < 10 ? cout<<'0'<<n : cout<<n;
	n = c[2] - 'a';
	n < 10 ? cout<<'0'<<n : cout<<n;
	n = c[3] - 'a';
	n < 10 ? cout<<'0'<<n : cout<<n;
	return 0;
}

# 題目 3. 解密 (不能用 if 或 string)

  • 題目內容
    輸入一個 8 位的整數。它的每兩位代表一個字母在字母表中的序號。
    將輸入轉換為四個字母的單字。

  • 輸入格式
    8 位整數

  • 輸出格式
    四個字母

  • 輸入示例
    01112004

  • 輸出示例
    blue

# 題解程式碼

#include <iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	char c[4];
	c[3] = n % 1000 + 'a';
	c[2] = (n / 100) % 100 + 'a';
	c[1] = (n / 10000) % 100 + 'a';
	c[0] = (n / 1000000) + 'a';	
	cout<<c;
	return 0;
}

# 題目 4. 計算公式的值 (三角等)

  • 題目內容
    輸入一個大於 0 的數 x (double),計算y=sin(x)ln(x)+x25y=\sin(x)-\ln(x)+\sqrt[2]{x}-5 的值
  • 輸入格式
    大於 0 的數 x
  • 輸出格式
    計算出的 y
  • 輸入示例
    1
  • 輸出示例
    - 3.15853

# 題解程式碼

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	double x;
	cin>>x;
	cout<<sin(x)-log(x)+sqrt(x)-5<<endl;
	return 0;
}

# 題目 5. 分糖果果囉!(不能用迴圈)

  • 題目內容
    有 10 個人圍坐一桌,10 個人的編號為 1-10,指定一個人 a 開始,再指定一個數 k,從 a 為 1 往下數,每數到 k,就给這個人發一顆糖果,然後再將下一個人為 1 數到 k,在發一顆糖果(不斷循環)。
    例如從 2 號人開始,k 為 3 則 4 號為分到糖果的人,再往下數 7 號為分到糖果的人,再往下數 10 號為分到糖果的人。

输入起始人的編號 a 和 k,輸出前四个分到糖果的人。

  • 輸入格式
    兩個正整數,中間用空格隔開。第一個數的範圍為 1-10。
  • 輸出格式
    輸出 4 個整數,代表前四個領到糖果的人,用一空格隔開
  • 輸入示例
    2 3
  • 輸出示例
    4 7 10 3

# 題解程式碼

#include<iostream>
using namespace std;
int main()
{
    int a, k;
    cin>>a>>k;
    
    a = a - 1 + k;
    a = a > 10 ? a % 10 : a;
    cout<<a;
    
    a = a + k;
    a = a > 10 ? a % 10 : a;
    cout<<' '<<a;
    
    a = a + k;
    a = a > 10 ? a % 10 : a;
    cout<<' '<<a;
    
    a = a + k;
    a = a > 10 ? a % 10 : a;
    cout<<' '<<a;    
    
    return 0;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay