前言
目前答案更新至 3.5。
可通過Gitee項目關注進度
從第二章第四節開始,編程練習均可以通過CCf中學生程序設計在線測評系統在線測試。網址:http://oj.noi.cn/
第1章 編程如此簡單
1.1 程序設計概念
(1)略
(2)略
1.2 整數算術計算
(1)300公頃
-
求1台拖拉機1天耕地公頃數:$90 \div 3 \div 3= 10 ( 公頃 ) $
-
求5台拖拉機6天耕地公頃數:\(10 \times 5 \times 6 = 300 ( 公頃 )\)
-
列出綜合算式: $ 90 \div 3 \div 3 \times 5 \times 6 = 300(公頃)$
程序:
#include <iostream> using namespace std; int main(){ cout<<"5台拖拉機6天能耕"; cout<<90/3/3*5*6<<"公頃地。"<<endl; return 0; }
(2)3次
- 求1輛車1次可以運送的鋼材量:$ 100\div 4 \div 5 = 5(噸) $
- 求7輛車運送105噸鋼材的次數: $ 105 \div (5 \times 7)=3(次) $
- 列出綜合算式: $ 105 \div ((100 \div 4 \div 5)\times 7)=3(次)$
程序:
#include <iostream>
using namespace std;
int main(){
cout<<"7輛車運送105噸鋼材需要";
cout<<105/((100/4/5)*7)<<"次"<<endl;
return 0;
}
(3) 去掉2根,每班7根
- 求每個班分到的繩子數:\(58\div 8 = 7 (根)... 2(根)\)
- 分到7根,余下兩根
程序:
#include <iostream>
using namespace std;
int main(){
cout<<"每個班最少要去掉"<<58%7<<"根跳繩。"<<endl;
cout<<"每個班分到"<<57/7<<"根跳繩"<<endl;
return 0;
}
1.3 實數算術計算
(1)1.92元
- 求每只鉛筆的價格:\(0.6 \div 5 = 0.12(元)\)
- 求16只鉛筆的價格: $0.12 \times 16 =1.92(元) $
- 綜合式子:\(16 \times (0.6 \div 5)=1.92(元)\)
程序:
#include <iostream>
using namespace std;
int main(){
cout<<"購買16只鉛筆需要"<<(0.6/5)*16<<"元"<<endl;
return 0;
}
(2)904套
- 求原來需要的布的量:\(3.2 \times 791 = 2531.2(m^2)\)
- 求改進后能做的量:\(2531.2 \div 2.8 = 904(套)\)
- 綜合式子:\(3.2 \times 791 \div 2.8 = 904(套)\)
程序:
#include <iostream>
using namespace std;
int main(){
cout<<"現在可以做"<<3.2*791/2.8<<"套"<<endl;
return 0;
}
(3)8厘米
- 求出正方形的面積:\(10 \times 8 - 16 = 64(m^2)\)
- 求出正方形的邊長:\(\sqrt{64}=8(m)\)
- 綜合式子:\(\sqrt{10 \times 8 - 16}=8(m)\)
程序:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
cout<<"正方形瓷磚邊長為"<<sqrt(10*8-16)<<"厘米"<<endl;
return 0;
}
第2章 數據的存儲和讀入
2.1 變量和變量的類型
(1)
變量名 | 是否合法 |
---|---|
3zh | 否,數字不能開頭 |
ant | 是 |
_3cq | 是 |
my | 是 |
friend | 否,friend是友元函數關鍵字 |
Mycar | 是 |
my_car | 是 |
all | 是 |
55a | 否,數字不能開頭 |
a_abc | 是 |
while | 否,while是循環關鍵字 |
daf-32 | 否,'-'不能構成變量名 |
x.13 | 否,'.'不能構成變量名 |
Var(3) | 否,括號不能構成變量名 |
maxn | 是 |
max&min | 否,'&'不能構成變量名 |
(2) 略
(3) 略
2.2 賦值語句和數學表達式
(1) C
(2)
(A)y=m*x+b
(B)m=(a+b+c)/(e*f)
(C)a=sqrt((x-3*y)*z)
(D)a=(2*x-y)/(x+y*y)
(E)m=(x-y*z)/(2/c)
(3) C、E
(4)
表達式 | 值 |
---|---|
++x | x=11 |
--x | x=9 |
y=x++ | y=10 ,x=11 |
y=--x | y=9,x=9 |
x++ | x=11 |
x-- | x=9 |
y=5*x++ | y=50,x=11 |
y=x--*2+3 | y=23,x=9 |
(5)
5-1
4 3 4
4 4 3
5-2
2 0
(6)
ceil(3.14)=4 floor(3.14)=3
4^3.0=64
sqrt(9)=3
(7)
#include <iostream>
#include <cmath>
using namespace std;
int main(){
cout<<"5年級分到"<<540/(120+150)*120<<"棵樹苗"<<endl;
cout<<"6年級分到"<<540/(120+150)*150<<"棵樹苗"<<endl;
return 0;
}
(8)略
2.3 數據類型轉換
(1)
1-1
3 3
3 8
11 8
c=1
c=1.375
1-2
3129,65,65,65.2,A
(2)
#include <iostream>
#include <cmath>
using namespace std;
int main(){
char c;
cin>>c;
cout<<char('a'+'z'-c);
return 0;
}
(3) 略
2.4 變量的讀入
(1)溫度轉換
(2)三角形
海倫公式
(3)猜數游戲
2.5 C語言中的scanf語句和printf語句
(1)
1-1
a=202
2*a=404
a=202
2323.343450
2323.34
2323.34
2323.34
1-2
1, 1,001,123,123 ,00123
2.6 順序結構程序設計實例
(1)填充矩形
(2)存款收益
(3)撿石頭
(4)計算余數
(5) 略
第3章 程序的選擇執行
3.1 if語句和關系表達式
(1)
1-1
輸入 | 輸出 |
---|---|
5 5 | 5 |
5 6 | 6 |
6 5 | 5 |
1-2
輸入 | 輸出 |
---|---|
5 5 | 5 |
5 6 | Unequal |
6 5 | Unequal |
(2)
2-1
輸入 | 輸出 |
---|---|
5 7 | 0 |
7 6 | 2 |
2-2
輸入 | 輸出 |
---|---|
5 7 | 5 |
7 6 | 2 |
(3)水仙花數
3.2 邏輯表達式和條件表達式
(1)分配任務
(2)郵寄包裹
(3)正方形
(4)變換密碼
3.3 嵌套if語句
(1)
程序段1
數據 | 輸出 |
---|---|
x=3,y=2 | 無 |
x=2,y=3 | x=2 |
x=3,y=4 | z =7 |
x=2,y=2 | x=2 |
x=3,y=3 | z =6 |
程序段2
數據 | 輸出 |
---|---|
x=3,y=2 | x=3 |
x=2,y=3 | 無 |
x=3,y=4 | z =7 |
x=2,y=2 | 無 |
x=3,y=3 | z =6 |
(2)識別三角形
(3)寫評語
3.4 switch語句
(1)略
(2)星期幾
(3)計算天數
(4)價格查詢
3.5 分支結構程序設計實例
(1)打電話
(2)分段函數
(3)數字識別
(4)發放獎金
第4章 程序段的反復執行
4.1 for語句
(1)
1-1
1-2
1-3
1-4
(2)
編號 | 結果 |
---|---|
A | |
B | |
C |
(3)平均年齡
(4)最大跨度
(5)
(6)因子個數
(7)統計獎牌
(8)表演打分
(9)陶陶摘蘋果