Skip to content

Commit e78bd45

Browse files
committed
update
1 parent 82ad6da commit e78bd45

33 files changed

+322
-390
lines changed
Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,51 @@
1-
# 课程大纲
1+
# 计算导论与C语言基础
22

3-
## week01
3+
## 课程介绍
44

5-
计算机基础原理
5+
这是北京大学在Coursera上开设程序设计与算法专项课程的第一门课,讲师是李戈老师,讲课幽默风趣。个人认为这算是一个不错的程序设计入门课,老师自己发明了一套“从感兴认识程序到理性认识程序”的学习方法。
66

7-
## week02
7+
相比授课,更加重要的是本课程提供的习题,这些习题都是从北大学生的作业里提炼出来的,由于是网课,数量自然少很多,但质量并不低。此外还提供了题目在POJ的链接,所有习题都可以先在POJ尝试提交,获得一个及时反馈。
88

9-
计算机历史及其发展趋势
9+
总的来说这门课还是比较基础,真的安排12周学完的话太长了,建议最好在一个月内完成吧。
1010

11-
## week03
1211

13-
程序运行的基本原理
12+
13+
## 课程主要内容
1414

1515
> 前三章都是计算机的一些概论性质的内容,不是特别重要。week4开始就有编程作业了
1616
17-
## week04
17+
week01:计算机基础原理
18+
19+
week02:计算机历史及其发展趋势
20+
21+
week03:程序运行的基本原理
22+
23+
week04:编程基本概念(变量、控制流等等)
24+
25+
week05:结构化程序设计,用样例介绍如何把现实问题抽象成程序问题
26+
27+
week06:C语言发展历史,程序设计语言构成
28+
29+
week07:数据类型
30+
31+
week08:运算符
32+
33+
week09:分支与循环语句
1834

19-
编程基本概念(变量、控制流等等)
35+
week10:数组
2036

21-
## week05
37+
week11:字符串
2238

23-
结构化程序设计,用样例介绍如何把现实问题抽象成程序问题
39+
week12:期末测试
2440

25-
## week06
41+
除了个别周外,每周都有课后习题。
2642

27-
C语言发展历史
2843

29-
程序设计语言构成
3044

31-
## week07
45+
## 习题集
3246

33-
数据类型
47+
课程中有一些编程练习题,基于这门课的知识只能用比较“笨”的方法去实现,但实际上是一些很经典的算法题目,特地整理在这里,方便以后学算法的时候进行回顾。
3448

49+
- week07_03:找出第k大的数
50+
- week08_05:找和为k的两个数
51+
-
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,3 @@
1-
/*
2-
成绩判断
3-
4-
描述
5-
6-
输入一个0--100的分数,判断分数代表什么等级。
7-
8-
95<=分数<=100, 输出1
9-
10-
90<=分数<95,输出2
11-
12-
85<=分数<90,输出3
13-
14-
80<=分数<85,输出4
15-
16-
70<=分数<80,输出5
17-
18-
60<=分数<70输出6
19-
20-
分数 < 60;输出7.
21-
22-
输入
23-
24-
n
25-
26-
输出
27-
28-
m
29-
30-
样例
31-
*/
32-
331
#include <iostream>
342
using namespace std;
353

Original file line numberDiff line numberDiff line change
@@ -1,23 +1,3 @@
1-
/*
2-
找出第k大的数
3-
4-
描述
5-
6-
用户输入N和K,然后接着输入N个正整数(无序的),程序在不对N个整数排序的情况下,找出第K大的数。注意,第K大的数意味着从大到小排在第K位的数。
7-
8-
输入
9-
10-
N
11-
12-
K
13-
14-
a1 a2 a3 a4 ..... aN
15-
16-
输出
17-
18-
b
19-
*/
20-
211
#include <iostream>
222
using namespace std;
233

@@ -29,9 +9,7 @@ int main()
299
int *a = new int[n];
3010

3111
for (int i = 0; i < n; i++)
32-
{
3312
cin >> a[i];
34-
}
3513

3614
for (int i = 0; i < n; i++)
3715
{
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,3 @@
1-
/*
2-
人民币支付
3-
4-
描述
5-
6-
从键盘输入一指定金额(以元为单位,如345),然后输出支付该金额的各种面额的人民币数量,显示100元,50元,20元,10元,5元,1元各多少张,要求尽量使用大面额的钞票。
7-
8-
输入
9-
10-
一个小于1000的正整数。
11-
12-
输出
13-
14-
输出分行,每行显示一个整数,从上到下分别表示100元,50元,20元,10元,5元,1元人民币的张数
15-
*/
16-
171
#include <iostream>
182
using namespace std;
193

1.计算导论与C语言基础/week07/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ PS:分子和分母都没有为0的情况,也没有出现负数的情况
135135

136136
每个冒号之后有一个空格。
137137

138-
输出可以用 cout<<fixed<<setprecision(2) << f; 来保留f后面的两位小数。
138+
输出可以用 `cout<<fixed<<setprecision(2) << f;` 来保留f后面的两位小数。
139139

140140

141141

@@ -227,9 +227,9 @@ b
227227

228228
### 解题思路
229229

230-
一开始还想着不排序岂不是很复杂?其实只要遍历每个数,求出比他大的个数,如果为k-1个,那么这个数就是第k大的数。但这个方法效率非常低。
231-
230+
我用了最简单,也是效率最低的方法,遍历每个数,求出比他大的个数,如果为k-1个,那么这个数就是第k大的数。
232231

232+
网上也有利用算法知识解决的,快速排序等等,因为还没学到这部分内容先跳过。
233233

234234
## 编程题#4:人民币支付
235235

Original file line numberDiff line numberDiff line change
@@ -1,31 +1,3 @@
1-
/*
2-
点评赛车
3-
4-
描述
5-
6-
4名专家对4款赛车进行评论
7-
8-
1)A说:2号赛车是最好的;
9-
10-
2)B说:4号赛车是最好的;
11-
12-
3)C说:3号赛车不是最好的;
13-
14-
4)D说: B说错了。
15-
16-
事实上只有1款赛车最佳,且只有1名专家说对了,其他3人都说错了。
17-
18-
请编程输出最佳车的车号,以及说对的专家。
19-
20-
输入
21-
22-
无输入。
23-
24-
输出
25-
26-
输出两行。第一行输出最佳车的车号(1-4中的某个数字)。第二行输出说对的专家(A-D中的某个字母)。
27-
*/
28-
291
#include <iostream>
302
using namespace std;
313

@@ -42,21 +14,13 @@ int main()
4214
{
4315
cout << best << endl;
4416
if (a)
45-
{
4617
cout << "A" << endl;
47-
}
4818
else if (b)
49-
{
5019
cout << "B" << endl;
51-
}
5220
else if (c)
53-
{
5421
cout << "C" << endl;
55-
}
5622
else if (d)
57-
{
5823
cout << "D" << endl;
59-
}
6024
}
6125
}
6226
return 0;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include <iostream>
2+
using namespace std;
3+
4+
int main()
5+
{
6+
int a = 0;
7+
int input = 0;
8+
int sum = 0;
9+
10+
cin >> a;
11+
for (int i = 0; i < 5; i++)
12+
{
13+
cin >> input;
14+
if (input < a)
15+
sum += input;
16+
}
17+
18+
cout << sum << endl;
19+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <iostream>
2+
using namespace std;
3+
4+
int main()
5+
{
6+
int n = 0;
7+
cin >> n;
8+
9+
10+
while (n--)
11+
{
12+
float dist = 0;
13+
cin >> dist;
14+
if ((dist / 3 + 50) < (dist / 1.2f))
15+
{
16+
cout << "Bike" << endl;
17+
}
18+
else if (((dist / 3 + 50) > (dist / 1.2f)))
19+
{
20+
cout << "Walk" << endl;
21+
}
22+
else
23+
{
24+
cout << "All" << endl;
25+
}
26+
}
27+
return 0;
28+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include <iostream>
2+
using namespace std;
3+
4+
int main()
5+
{
6+
int N = 0, K = 0;
7+
while (cin >> N >> K)
8+
{
9+
int money = N;
10+
float price = 200;
11+
bool canBuy = false;
12+
for (int i = 1; i <= 20; i++)
13+
{
14+
if (money >= price)
15+
{
16+
cout << i << endl;
17+
canBuy = true;
18+
break;
19+
}
20+
money += N;
21+
price *= (1 + K / 100.0);
22+
}
23+
if (!canBuy)
24+
{
25+
cout << "Impossible" << endl;
26+
}
27+
}
28+
return 0;
29+
}

0 commit comments

Comments
 (0)