# 測驗時間
# 第一回
一行程式碼中,如果連續出現了兩個分號,編譯就會錯誤
C++ 中的每一條語句後面都一定要加分號
C++ 中的變數名稱只能用一個字母表示。
編寫 C++ 程式的一般步驟依次是 。
下列哪行程式碼可使 "Hello world" 這句話出現在電腦螢幕上?
下列哪個不是 C++ 合法的標識符?
下列何者不是 C++ 關鍵字?
C++ 的縮排會影響編譯是否成功
為了能夠方便利用每個字元,取名字的時候直接從
a
開始取縮排風格的不同,對編譯而言沒有影響
下列何者為 C++ 的單行註解?
遇到編譯錯誤 (Bug) 時,我們該如何面對它
# 第二回
下列何者為 C++ 合法的字元?
32 位元系統中,C++ 的
int
型數據佔的空間一般為。下列敘述何者錯誤?
const
宣告常數時,一定要設定初值。#define
的使用可以在任何位置
# 第三回
設
n=10
,i=4
,則執行指定運算n=n%(i-1)
後,n 的值是。遞增、遞減運算可以用於變數上,也可以用於常數及表達式上。
下面哪一項 C++ 表達式不能正確表示數學關係
a<x<=b
。若有
a=1
,b=2
,则表達式 a+1==b 的值為。在位運算中,操作數每右移一位,其结果相當於。
n 元運算子的含意是 。
若有
a=2
,b=4
,c=5
,則表達式a>b?a:b>c?a:c
的值為 。不合法的指定語句是。
有一表達式:
19/3*sqrt(4.0)/5
,則該表達式的資料型態為。
# 來個驗收考題吧
- 下列的變數皆以正確宣告為 int,下列選項為不正確賦值的是。
- 設
i=6
,k=0
,下列各語句,運算結果為k=7
的是。 - 下列不合法的變數名為。
int x = 3,y = 4,z = 5;
,則值為的 0 是。- 設 x,y,z 為整數,下列各式中,運算結果與
x=y=24
的結果一樣的為。 - 當
a=6,b=5
時,語句cout<<(a<=7 && a+b>8)<<endl;
的值為。
# 簡單的上機一下
# 題目 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. 溫度轉換
題目內容
輸入華氏溫度,用下列公式將其轉換為攝氏溫度並輸出。輸入格式
任一實數輸出格式
轉換後的攝氏溫度,實數輸入示例
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,計算 的值 - 輸入格式
輸入整數 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),計算 的值 - 輸入格式
大於 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; | |
} |