Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 104ce66

Browse files
upload
1 parent ffddcf9 commit 104ce66

File tree

119 files changed

+3344
-185
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+3344
-185
lines changed

‎C程序设计进阶/week2/Week2.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Week2
2+
3+
## 函数的定义与声明
4+
5+
三种函数调用的方式
6+
7+
- 独立语句
8+
- 表达式的一部分
9+
- 作为其他函数的实参
10+
11+
## 函数的调用过程
12+
13+
## 函数调用实例
14+
15+
## 变量的作用域
16+
17+
## 数组做函数参数
18+
19+
- 数组元素做参数
20+
- 数组名做参数
21+
22+
## 函数应用实例
23+
24+
25+

‎C程序设计进阶/week2/week2.pdf

3.46 MB
Binary file not shown.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
编程题#3:发票统计
3+
4+
注意: 总时间限制: 1000ms 内存限制: 65536kB
5+
6+
描述
7+
8+
有一个小型的报账系统,它有如下功能:
9+
10+
(1)统计每个人所报发票的总钱数
11+
12+
(2)统计每类发票的总钱数
13+
14+
将此系统简化为如下:假设发票类别共有A、B、C三种;一共有三个人,ID分别为1、2、3。
15+
16+
输入
17+
18+
系统输入包含三行,每行第一个数为人员ID(整型,1或2或3),第二个数为发票总张数(张数不超过100),之后是多个发票类别(字符型,A或B或C)和相应发票金额(单进度浮点型,不超过1000.0)。
19+
20+
输出
21+
22+
输出包含六行,前三行为每人(按ID由小到大输出)所报发票总钱数(保留两位小数),后三行为每类发票的总钱数(保留两位小数)。
23+
24+
样例输入
25+
1 5 A 1.0 A 2.0 C 1.0 B 1.0 C 1
26+
3 3 B 1 C 2 C 1
27+
2 4 B 1 A 1 C 1 A 1
28+
29+
样例输出
30+
1 6.00
31+
2 4.00
32+
3 4.00
33+
A 5.00
34+
B 3.00
35+
C 6.00
36+
*/
37+
38+
#include <iostream>
39+
#include <iomanip>
40+
using namespace std;
41+
42+
int main()
43+
{
44+
float bill[3][3] = { 0 };
45+
46+
for (int i = 0; i < 3; i++)
47+
{
48+
int id, n;
49+
cin >> id >> n;
50+
for (int j = 0; j < n; j++)
51+
{
52+
char type;
53+
float money;
54+
cin >> type >> money;
55+
switch (type)
56+
{
57+
case 'A':
58+
bill[id - 1][0] += money;
59+
break;
60+
case 'B':
61+
bill[id - 1][1] += money;
62+
break;
63+
case 'C':
64+
bill[id - 1][2] += money;
65+
break;
66+
}
67+
}
68+
}
69+
70+
for (int i = 0; i < 3; i++)
71+
{
72+
cout << i + 1 << ' ' << fixed << setprecision(2) << bill[i][0] + bill[i][1] + bill[i][2] << endl;
73+
}
74+
75+
char type[] = { 'A', 'B', 'C' };
76+
for (int i = 0; i < 3; i++)
77+
{
78+
cout << type[i] << ' ' << fixed << setprecision(2) << bill[0][i] + bill[1][i] + bill[2][i] << endl;
79+
}
80+
return 0;
81+
}
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/*
2+
编程题#2:四大湖
3+
4+
注意: 总时间限制: 1000ms 内存限制: 65536kB
5+
6+
描述
7+
8+
我国有4大淡水湖。
9+
10+
A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。
11+
12+
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。
13+
14+
C说:洪泽湖最小,洞庭湖第三。
15+
16+
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
17+
18+
已知这4个湖的大小均不相等,4个人每人仅答对一个,
19+
20+
请编程按照鄱阳湖、洞庭湖、太湖、洪泽湖的顺序给出他们的大小排名。
21+
22+
输入
23+
24+
无。
25+
26+
输出
27+
28+
输出为4行,第1行为鄱阳湖的大小名次,从大到小名次分别表示为1、2、3、4;第2、3、4行分别为洞庭湖、太湖、洪泽湖的大小名次。
29+
30+
样例输入
31+
(无)
32+
33+
样例输出
34+
3
35+
2
36+
1
37+
4
38+
*/
39+
40+
#include <iostream>
41+
using namespace std;
42+
43+
int check(int guess[], int order[]);
44+
45+
46+
int main()
47+
{
48+
// 顺序:鄱阳湖、洞庭湖、太湖、洪泽湖
49+
int guessA[4] = { 3,1,0,4 };
50+
int guessB[4] = { 2,4,3,1 };
51+
int guessC[4] = { 0,3,0,4 };
52+
int guessD[4] = { 1,3,4,2 };
53+
54+
for (int i = 1; i <= 4; i++)
55+
{
56+
for (int j = 1; j <= 4; j++)
57+
{
58+
if (j == i)
59+
{
60+
continue;
61+
}
62+
for (int k = 1; k <= 4; k++)
63+
{
64+
if (k == i || k == j)
65+
{
66+
continue;
67+
}
68+
for (int l = 1; l <= 4; l++)
69+
{
70+
if (l == i || l == j || l == k)
71+
{
72+
continue;
73+
}
74+
int order[4] = { i, j, k, l };
75+
if (check(guessA, order) == 1 && check(guessB, order) == 1 && check(guessC, order) == 1 && check(guessD, order) == 1)
76+
{
77+
for (int m = 0; m < 4; m++)
78+
{
79+
cout << order[m] << endl;
80+
}
81+
return 0;
82+
}
83+
}
84+
}
85+
}
86+
}
87+
return 0;
88+
}
89+
90+
int check(int guess[], int order[])
91+
{
92+
int result = 0;
93+
for (int i = 0; i < 4; i++)
94+
{
95+
if (order[i] == guess[i])
96+
{
97+
result++;
98+
}
99+
}
100+
return result;
101+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
编程题#1:寻找下标
3+
4+
注意: 总时间限制: 1000ms 内存限制: 65536kB
5+
6+
描述
7+
8+
已知一个整数数组x[],其中的元素彼此都不相同。找出给定的数组中是否有一个元素满足x[i]=i的关系,数组下标从0开始。
9+
10+
举例而言,如果x[]={-2,-1,7,3,0,8},则x[3] = 3,因此3就是答案。
11+
12+
输入
13+
14+
第一行包含一个整数n (0 < n < 100),表示数组中元素的个数。<br />第二行包含n个整数,依次表示数组中的元素。
15+
16+
输出
17+
18+
输出为一个整数,即满足x[i]=i的元素,若有多个元素满足,输出第一个满足的元素。若没有元素满足,则输出"N"。
19+
20+
样例输入
21+
第一组
22+
6
23+
-2 -1 7 3 4 8
24+
第二组
25+
6
26+
9 9 9 9 9 9
27+
28+
样例输出
29+
第一组
30+
3
31+
第二组
32+
N
33+
*/
34+
#include <iostream>
35+
using namespace std;
36+
37+
int main()
38+
{
39+
int n = 0;
40+
int a[100];
41+
42+
cin >> n;
43+
for (int i = 0; i < n; i++)
44+
{
45+
cin >> a[i];
46+
}
47+
48+
for (int i = 0; i < n; i++)
49+
{
50+
if (a[i] == i)
51+
{
52+
cout << i << endl;
53+
return 0;
54+
}
55+
}
56+
cout << "N" << endl;
57+
return 0;
58+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/*
2+
编程题#4:Tomorrow never knows?
3+
4+
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
5+
6+
注意: 总时间限制: 1000ms 内存限制: 65536kB
7+
8+
描述
9+
10+
甲壳虫的《A day in the life》和《Tomorrow never knows》脍炙人口,如果告诉你a day in the life,真的会是tomorrow never knows?相信学了计概之后这个不会是难题,现在就来实现吧。
11+
12+
读入一个格式为yyyy-mm-dd的日期(即年-月-日),输出这个日期下一天的日期。可以假定输入的日期不早于1600年01月01日,也不晚于2999年12月30日。
13+
14+
输入
15+
16+
输入仅一行,格式为yyyy-mm-dd的日期。
17+
18+
输出
19+
20+
输出也仅一行,格式为yyyy-mm-dd的日期
21+
22+
样例输入
23+
2010年07月05日
24+
25+
样例输出
26+
1
27+
2010年07月06日
28+
*/
29+
30+
#include <iostream>
31+
#include <iomanip>
32+
using namespace std;
33+
34+
bool isLeapYear(int year);
35+
bool isEndOfMonth(int month, int day, bool isLeapYear);
36+
bool isEndOfYear(int month, int day);
37+
38+
int main()
39+
{
40+
int year, month, day;
41+
char dash;
42+
cin >> year >> dash >> month >> dash >> day;
43+
if (isEndOfMonth(month, day, isLeapYear(year)))
44+
{
45+
if (isEndOfYear(month, day))
46+
{
47+
year++;
48+
month = 1;
49+
day = 1;
50+
}
51+
else
52+
{
53+
month++;
54+
day = 1;
55+
}
56+
}
57+
else
58+
{
59+
day++;
60+
}
61+
cout << year << '-'
62+
<< setfill('0') << setw(2) << month << '-'
63+
<< setfill('0') << setw(2) << day << endl;
64+
return 0;
65+
}
66+
67+
bool isLeapYear(int year)
68+
{
69+
return year % 400 == 0 || (year % 100 != 0 && year % 4 == 0);
70+
}
71+
72+
bool isEndOfMonth(int month, int day, bool isLeapYear)
73+
{
74+
int months[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
75+
if (isLeapYear)
76+
{
77+
months[1] = 29;
78+
}
79+
80+
for (int i = 0; i < 12; i++)
81+
{
82+
if (day == months[month - 1])
83+
{
84+
return true;
85+
}
86+
}
87+
return false;
88+
}
89+
90+
bool isEndOfYear(int month, int day)
91+
{
92+
return month == 12 && day == 31;
93+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /